【问题标题】:Improve quality of image for tesseract OCR提高 tesseract OCR 的图像质量
【发布时间】:2017-06-30 14:19:16
【问题描述】:

关于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

如果我现在使用 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

我得到了这样的东西

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

我知道示例页面是一个特别难的页面,但是,即使页面不是墨迹斑驳的印刷品,并且一开始也没有歪斜,在使用tesseract 和上述命令处理它们时,也会产生大部分混乱的输出和无法辨认的姓氏.

例如这个页面

问:我怎样才能进一步提高tesseract 的图像质量——至少——在文本中找到姓氏?您会建议哪种程序?

编辑: 我不知道,是否需要训练 tesseract 还是处理给定的 German Fraktur 字体的好主意,因为 GUI 框编辑器似乎在 MacOS 上可靠地工作,例如,参见 jTessBoxEditorQt-box-editorTesseract-Box-Editor ,我也不了解如何训练 tesseract,请参阅 tesseract 训练 wiki here 和另一个教程 here

【问题讨论】:

    标签: macos pdf jpeg ocr tesseract


    【解决方案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 有多个页面)。您可以将“paper”替换为原始 pdf 的基本名称。你也可以弄乱分辨率。可以在https://ghostscript.com/doc/9.19/Use.htm

    找到这些内容和其他内容

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

    【讨论】:

    • 嗨,迈克,感谢您发帖。我尝试了您的脚本,但未能“翻译”它以使其与 mac 一起使用。有关如何使其适用于 mac 的任何建议?
    • 感谢您的快速回复。我遇到的最后一个问题是,考虑到大量的 PDF,我想将 GNU 与 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 应该在哪里)。你知道我做错了什么吗?
    • 我从来没有文件夹,而且我也不是 GNU 并行方面的专家。你能尝试一些低技术的东西,比如对你的文件进行分区和分叉进程以按顺序执行每个分区吗?只是看看它是否是 GNU 并行的。
    • 嗨,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 {}'。非常感谢您的帮助!
    猜你喜欢
    • 2018-02-11
    • 2016-11-14
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多