提高tesseract OCR的图像质量

时间:2017-06-30 14:19:17

标签: macos pdf jpeg ocr tesseract

关于this问题和this问题,我问如何下载数千个PDF并处理它们以OCR提取文本,我正在点击在增强文本输出时再次出现一堵砖墙。

我有兴趣提取一堆PDF的文本,以便在文本中搜索姓氏(我不一定能够阅读文本的其余部分)。 PDF代表旧报纸文章,发表于1810年至1832年,并以German Fraktur撰写。对于tesseract,此字体似乎特别具有挑战性。

问:如何进一步提高tesseract的图像质量 - 至少 - 是否需要更改文本中的姓氏?你会建议哪种程序?

如果我们以this pdf为例,我在申请时会收到以下图片

convert -colorspace GRAY -resize 3000x -units PixelsPerInch example.pdf example-page.jpg

enter image description here

如果我现在使用tesseract

tesseract --tessdata-dir /usr/local/share/tessdata/ -l deu_frak example-page.jpg example-page.txt

它会在该图像上表现糟糕,仅检测到大约360个变音符号。我的文字输出完全是乱码。

当我使用Fred的ImageMagick脚本textcleaner时,应用

textcleaner -g -e stretch -f 25 -o 10 -u -s 1 -T -p 10

textcleaner -g -e stretch -f 25 -o 20 -t 30 -u -s 1 -T -p 20

我得到这样的东西

enter image description here

当我再次使用上面提到的命令再次运行tesseract时,生成的文本要好得多(检测到大约700-800个变音符号),但仍然不能找到文本的大多数姓氏。

我知道示例页面是一个特别困难的页面,然而,即使页面不是墨似的打印而且不会开始倾斜,在使用tesseracttesseract处理时,会产生大部分乱码输出和难以辨认的姓氏以上命令。

例如此页面

enter image description here

问:如何进一步提高$map的图像质量 - 至少 - 是否需要更改文本中的姓氏?你会建议哪种程序?

修改 我不知道,是否需要训练tesseract或处理给定的德语Fraktur字体是一个好主意,因为GUI框编辑器似乎在MacOS上可靠地运行,例如,参见jTessBoxEditorQt-box-editor,或Tesseract-Box-Editor,我也不了解如何训练tesseract,请参阅tesseract培训维基here和另一个教程here

1 个答案:

答案 0 :(得分:1)

我的父亲在他的旧剪报中遇到了类似的问题,我通过使用GhostScript预处理然后应用Tesseract取得了相当不错的成功。你的旅费可能会改变。我的命令(Windows)是

set nm=%1
set d=%2
"C:\Program Files\gs\gs9.21\bin\gswin32.exe" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r150 -dTextAlphaBits=4 -sOutputFile="%nm%-%%00d.pgm" %nm%.pdf
echo. 2>"%nm%.txt"

for %%f in (%nm%*.pgm) do (
    echo %%~nf
    "C:\Program Files\Tesseract-OCR\tesseract.exe" "%%~nf.pgm" "%%~nf"
    cat "%%~nf.txt" >> "%nm%.txt"   
    del  "%%~nf.pgm"
    del  "%%~nf.txt"
)
"C:\Program Files\Microsoft Office\Office11\winword.exe" "%nm%.txt"

编辑:对评论的回应

首先,在你的mac上安装ghostscript。见https://wiki.scribus.net/canvas/Installation_and_Configuration_of_Ghostscript#Installing_Ghostscript_on_Mac_OS_X

然后做

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r150 -dTextAlphaBits=4 -sOutputFile='paper-%00d.pgm' paper.pdf

这将创建光栅化文件paper-01.pgm,paper-02.pgm等(这是因为你的pdf有多个页面)。你可以更换"纸张#34;使用原始pdf的基本名称。你也可以搞乱这个决议。可以在https://ghostscript.com/doc/9.19/Use.htm

找到该内容和其他内容

然后在每个pgm文件上使用tesseract。