提高 tesseract OCR 的图像质量
Improve quality of image for tesseract OCR
关于 question and 问题,我问如何下载数以千计的 PDF
并处理它们以使用 OCR
提取文本,我又碰壁了它涉及到增强文本输出。
我有兴趣提取一堆 PDF
的文本,以便在文本中搜索姓氏(我不需要一定能够阅读其余文本)。 PDF
代表旧报纸文章,发表于 1810 年至 1832 年间,用 German Fraktur 撰写。这种字体似乎对tesseract
.
特别具有挑战性
问:我怎样才能进一步提高 tesseract
的图像质量,以 - 至少 - 改变以在文本中查找姓氏?您建议采用哪种程序?
如果以thispdf为例,我在申请的时候收到如下图
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 或处理给定的德国 Fraktur 字体的好主意,因为 GUI 框编辑器似乎在 MacOS 上可靠地工作,例如,参见 jTessBoxEditor, Qt-box-editor, or Tesseract-Box-Editor, nor did I understand how to train tesseract, see the tesseract training wiki here and another tutorial here。
我父亲的旧剪报也有类似的问题,我通过使用 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。
关于 PDF
并处理它们以使用 OCR
提取文本,我又碰壁了它涉及到增强文本输出。
我有兴趣提取一堆 PDF
的文本,以便在文本中搜索姓氏(我不需要一定能够阅读其余文本)。 PDF
代表旧报纸文章,发表于 1810 年至 1832 年间,用 German Fraktur 撰写。这种字体似乎对tesseract
.
问:我怎样才能进一步提高 tesseract
的图像质量,以 - 至少 - 改变以在文本中查找姓氏?您建议采用哪种程序?
如果以thispdf为例,我在申请的时候收到如下图
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 或处理给定的德国 Fraktur 字体的好主意,因为 GUI 框编辑器似乎在 MacOS 上可靠地工作,例如,参见 jTessBoxEditor, Qt-box-editor, or Tesseract-Box-Editor, nor did I understand how to train tesseract, see the tesseract training wiki here and another tutorial here。
我父亲的旧剪报也有类似的问题,我通过使用 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。