在Python应用中使用Tesseract OCR的性能问题

3 投票
1 回答
3415 浏览
提问于 2025-04-16 10:24

我最近做了一个界面,用来扫描和上传可以搜索的文件到我们的文档管理系统KnowledgeTree。我们有很多不同的工具来处理这个过程的各个部分,但我想把所有东西整合到一个界面里,这样用户使用起来会更简单。

这是平台:

#    OS: Ubuntu Desktop 10.04
#    GUI Toolkit: wxPython
#    OCR package: Tesseract 3.00 (compiled executable)

这是基本的流程:

#    1. Retrieve individual page images from scanner
#    2. Call Tesseract OCR executable to produce HOCR data for each page
#    3. Run extracted words against English dictionary to guess if page orientation is correct
#        3a. If word matches are below threshold, rotate page 90 degrees and try again
#    4. Detect document type and retrieve metadata from HOCR data
#    5. Merge scanned pages and HOCR data into a finished PDF
#    6. Upload PDF and attached metadata to document management system through KnowledgeTree's API

这个流程运行得很好,除了第二步在某些类型的文件上非常慢。对于基本的固定宽度文本报告,它处理得很快,但如果里面有一些logo、线条和其他难以识别的内容,它有时候在一页上就要花几分钟。更别提如果它需要重新调整方向,可能会重复这个过程多达4次。相比之下,扫描仪自带的软件使用了ABBYY OCR,可以在不到一分钟的时间内处理50多页,几乎完美地处理页面布局和文本方向(我知道这就是ABBYY收费的原因)。不幸的是,使用这个扫描软件对用户来说更复杂,而且它自己只能完成步骤1到3。

我想知道我是否应该换个方式来处理这个问题,可能完全把OCR和上传功能与扫描界面分开,或者有没有我忽视的OCR包或其他解决方案可以集成到Python应用中。调用外部应用来完成这个工作会不会导致性能问题呢?

无论我怎么做,控制第4步是很重要的,因为如果要求用户手动设置每个上传文件的类型和元数据,这可能会造成问题。

1 个回答

1

你遇到的问题是,Tesseract是一个光学字符识别(OCR)引擎,而不是用来分析页面布局的软件。根据Tesseract的网站,版本3.0可能会加入页面布局分析的功能。

我知道在之前的版本中,它只在文本是单列的时候表现得比较好。

我觉得你需要增加一个步骤1.5,来做一些布局分析,试着找出图像块、标志和难以辨认的文本。

你可能想看看OCRfeeder,了解一下它的解决方案。

撰写回答