对多个文件执行 OCR 和重命名

对多个文件执行 OCR 和重命名

我有一个文件夹,里面有数百张图片,每张图片的标题都带有文字。我想使用 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 个字符的行。

如果您要使用移动或重命名命令,请先备份文件。

相关内容