提高Tesseract OCR图像质量

4
关于 thisthis 问题,我询问如何下载数千个 PDF 并使用 OCR 处理它们以提取其文本时,当涉及到增强文本输出时,我又遇到了难题。
我有兴趣提取一堆 PDF 的文本,以搜索其中的姓氏(我不需要必须能够阅读其余文本)。这些 PDF 是旧报纸文章,发表于1810年至1832年之间,使用 德语黑体 写成。该字体似乎对于 tesseract 特别具有挑战性。 问:我该如何进一步改善 tesseract 的图像质量,至少有机会在文本中找到姓氏?您建议采用哪种程序? 如果我们以thisPDF为例,应用时我会收到以下图片。
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个变音符号),但仍然足够混乱,以至于无法找到大部分文本中的姓氏。
我知道这个示例页面特别困难,但是即使是非墨水印和不倾斜的页面,在使用tesseract和上述命令处理它们时,也会产生大部分混乱的输出和无法辨认的姓氏。
例如,这个页面。

enter image description here

问:我该如何进一步改善tesseract的图像质量,以至少有机会在文本中找到姓氏?你会建议哪种方法?

编辑: 我不知道是否需要训练tesseract或者使用处理给定的德语Fraktur字体的好方法,因为GUI框编辑器在MacOS上似乎可以可靠地工作,例如,jTessBoxEditorQt-box-editorTesseract-Box-Editor,我也不明白如何训练tesseract,请参见tesseract培训wiki here和另一个教程here

1个回答

2

我父亲在处理旧报纸剪贴时也遇到了类似的问题,我曾试着使用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有多个页面)。 您可以将“paper”替换为原始pdf的基本名称。 您还可以调整分辨率。 这些和其他内容可以在https://ghostscript.com/doc/9.19/Use.htm找到。
然后对每个pgm文件使用tesseract。

嗨,Mike,谢谢你的发帖。我尝试了你的脚本,但是无法“翻译”它以使其在Mac上运行。有什么建议可以让它在Mac上运行吗? - Til Hund
感谢您的快速回复。我遇到的最后一个问题是,由于有大量的PDF文件,我想使用GNU parallel和gs。我尝试了这个命令 time parallel -j 8 --verbose --progress 'mkdir -p {.} && gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pgmraw -r300 -dTextAlphaBits=4 -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o {.}/{.}.pgm' ::: *.pdf,但只导致文件夹(以每个PDF文件的名称命名)为空(应该是相应PDF的pgm)。您知道我做错了什么吗? - Til Hund
1
我从未使用过文件夹,也不是GNU parallel的专家。你可以尝试一些低技术的方法,例如将文件分区并分叉进程以便逐个处理每个分区,以此来测试是否是GNU parallel的问题。 - mikep
嗨,mikep,我刚刚解决了这个小问题。我知道这是命令语法的问题。这将是正确的命令:time find . -name \*.pdf | time parallel -j 8 --verbose --progress 'mkdir -p {.} && gs -dSAFER -dBATCH -dNOPAUSE -dPDFSETTINGS=/screen -sDEVICE=pgmraw -r300 -dTextAlphaBits=4 -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o {.}/{.}-%03d.pgm {}'。非常感谢您的帮助! - Til Hund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接