R、tesseract 和预处理图像中的 OCR 表
Posted
技术标签:
【中文标题】R、tesseract 和预处理图像中的 OCR 表【英文标题】:OCR tables in R, tesseract and pre-pocessing images 【发布时间】:2017-07-17 01:38:37 【问题描述】:我正在尝试使用 R 中的 tesseract 从旧书中提取表格。这是一个示例:Image
图像质量很差,一开始识别率也很差。然而,我设法通过 gimp 来增加它:重新缩放、灰度、颜色的自动阈值、高斯模糊和/或锐化过滤器。 我还试了一下 Fred 的 imageMagick 脚本 - textcleaner - 并使用 imageMagick 成功去除了黑线。 这就是我在 R 中所做的:
library(tesseract)
library(magick)
img <- image_read('img.png')
img_data <- ocr(img, engine = tesseract('eng', options = list(tessedit_char_whitelist = '0123456789.-',
tessedit_pageseg_mode = 'auto',
textord_tabfind_find_tables = '1',
textord_tablefind_recognize_tables = '1')))
cat(img_data)
鉴于我只想处理数字,我设置了 tessedit_char_whitelist,虽然我得到了更好的结果,但它们仍然不可靠。 在这种情况下你会怎么做?在我尝试训练 tesseract 之前,还有什么其他想法可以提高准确性吗?我从来没有做过 - 更不用说只有数字了。关于如何做的任何想法/经验?我已经检查过了:https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00 但我还是有点困惑。
【问题讨论】:
【参考方案1】:我参与了一个项目,该项目使用 Tesseract 从视频帧中读取数据字段并从中创建索引电子表格。我发现效果很好的是从每个图像中裁剪每个文本字段(使用 ffmpeg),处理(使用 ImageMagick,使用您提到的类似技术),OCR,然后我有 Python(可以在 R 中完成类似的事情)创建一个OCR 结果的电子表格。这种方法的好处是 Tesseract 只需要处理小的单行文本图像,就我而言,这似乎可以改善结果(使用 -psm 7
选项)。缺点是它的处理非常密集。也许为页面的每一行创建一个图像会有所帮助。
我确实发现为新字体/语言训练 Tesseract 极大地帮助了我的结果。这可能既乏味又耗时,但它显着改善了我的结果,有时从 0% 正确到 100% 正确。 This site 帮助我理解了这个过程。我只是按照他们的步骤,果然奏效了。根据我创建训练图像的经验,裁剪单个字符很有帮助,每个字符至少有十几个来创建一个好的训练样本。并尝试为每个字符设置相似数量的样本;似乎如果您对一个角色进行更多的处理,Tesseract 会更频繁地(错误地)给出该角色。
【讨论】:
以上是关于R、tesseract 和预处理图像中的 OCR 表的主要内容,如果未能解决你的问题,请参考以下文章
python(pillow /tesseract-ocr/pytesseract)安装介绍
Tesseract-OCR编译及ViewerDebugging使用