我有一个文件夹,里面有数百张图片,每张图片的标题都带有文字。我想使用 OCR 从每张图片中提取第一行文字,并将文件重命名为该文字。或者,如果更简单的话,可以将文字放在图片元数据中。
我已经安装了 tesseract,并且在 MacOS 上使用 zsh。请问实现此目的的最佳方法是什么?谢谢。
答案1
您可以尝试以下操作:
mkdir renamed
for filename in *.jpg
do
text=$(tesseract "$filename" stdout | head -1)
cp "$filename" renamed/"$text".jpg
done
for filename in *.jpg
对匹配的文件进行循环*.jpg
;text=$(tesseract "$filename" stdout | head -1)
tesseract
在文件上执行并将文本导入到head -1
,它只输出第一行。结果进入变量text
cp "$filename" renamed/"$text".jpg
将文件复制到renamed
名为的目录"$text".jpg
。
要消除所需文本之前读取的任何垃圾,可以使用text=$(tesseract "$filename" stdout | grep -E ".{10}" | head -1)
。该命令grep -E ".{10}"
将消除任何少于 10 个字符的行。
如果您要使用移动或重命名命令,请先备份文件。