#!/bin/sh set -e currDir=$pwd framespath=${1:-} lang=${2:-deu} [ -z "$framespath" ] && echo "no framespath provided" && exit 1 parentDIR=$(dirname "$framespath") textDIR="$parentDIR"/text grayDIR="$parentDIR"/gray mkdir -p ${textDIR} ${grayDIR} # split video on frames (every 90 seconds) # ffmpeg -i "$videopath" -r 0.011 frames/ffmpeg_%0d.jpg # yes | ffmpeg -i "$videopath" -ss 00:00:05 -vframes 1 frames/ffmpeg_2.jpg # lets say we dont know extention # ext=".jpg" # convert each frame to grayscale then crop to text if any for img in "$framespath"/* do iname=$(basename "$img") sub_img_name=$"${grayDIR}/sub_${iname}" sub_out="$textDIR/$(echo "$iname" | sed 's/.\(png\|gif\|jpg\|jpeg\|bmp\)//')" magick convert "$img" -chop 220x0 -gravity East -chop 220x0 \ -gravity South -chop 0x50 \ -colorspace Gray -resize 600x "$sub_img_name" # dpi=$(magick identify -format '%x' $sub_img_name) # echo "$sub_img_name - dpi: $dpi" # dpi=300 printf "\r%s" "$sub_img_name" # call tesseract to get the text # tesseract -l $lang --dpi $dpi $sub_img_name $sub_out tesseract -l "$lang" "$sub_img_name" "$sub_out" done resultfile=$(basename "$framespath") find "$textDIR" -type f | sort -n | xargs cat > "${parentDIR}/${resultfile}.txt" cd $currDir ./remove_dups.py "$textDIR" "${parentDIR}/${resultfile}_clean" # rm -rf text # rm -rf frames