【发布时间】:2017-06-29 09:02:28
【问题描述】:
我想在 Mac 上使用开源命令行工具批量处理 OCR 大约 5800 个 PDF(每个问题由我上一个问题 here 的 2 到 6 页组成)。这次冒险的主要建议是,我想从所有这些PDF 的文本中检索尽可能可靠的名字(最重要的是姓氏)。 Here 是一个问题的示例。
在这一点上,我不知道该怎么做。你会怎么做?
我想首先将所有多页PDF 转换为png、jpg 或tif 的单页图像,然后将与一个PDF 相关的所有图像移动到带有以下命令:
time for i in *.pdf; do mkdir "${i%.pdf}"; convert -colorspace GRAY -resize 3000x -units PixelsPerInch "$i" "${i%.pdf}.jpg”; mv *.jpg "${i%.pdf}"; done
作为第二步,我的 OCR 脚本需要进入每个文件夹,发挥其魔力,然后离开它以便继续下一步。我不知道该怎么写。脚本的核心是:
tesseract --tessdata-dir /usr/local/share/tessdata/ --oem 3 --psm 11 -l deu_frak *.jpg test.txt
PDF 代表旧报纸文章,从 1810 年到 1832 年几乎每天都在发表,它们是用德语写的 Fraktur。对于tesseract,这种字体似乎特别具有挑战性。我的文本输出通常是加扰的,例如。 G。在上面链接的文章中,我只会在第一页检测到 791 到 801 个变音符号。根据所选择的选项,名称可能不会被识别出来。
最后,我将使用silver searcher 在所有 5800 个 txt 文件中查找名称,我希望得到。
time rg -i search_term_here
最后,如何确保获得最佳的 OCR 输出,以便获得文本中的大部分 (sur) 名称?
P.S.:顺便问一下,tesseract 4 什么时候会出现在 Mac 和德国 Fraktur 训练数据上?
编辑:
这些是我用来实现我想要的命令的命令。 虽然 tesseract 的输出还有很大的提升空间。
将每个PDF 转换为jpg 并将它们移动到各自的文件夹以保持顺序:
time parallel -j 8 'mkdir {.} && convert {} -colorspace GRAY -resize 3000x -units PixelsPerInch {.}/{.}.jpg' ::: *.pdf
使用 Fred 的 ImageMagick 脚本 textcleaner(我已将其移至 /usr/local/bin/ 以提高可用性),以稍微增强 tesseract 输出:
time find . -name \*.jpg | parallel textcleaner -g -e stretch -f 25 -o 10 -u -s 1 -T -p 10 {} {}
并行化 tesseract 分析:
time find . -name \*.jpg | parallel -j 8 “tesseract {} {.}.txt —tessdata-dir /usr/local/share/tessdata/ -l deu_frak”
搜索带有the silver searcher的姓氏:
time rg -t txt -i term
【问题讨论】:
标签: macos pdf imagemagick ocr tesseract