我最近整理了一个界面,用于扫描和上传可搜索的文档到我们的文档管理系统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
它工作得很漂亮,除了步骤2在某些类型的文档上极慢。它通过基本的固定宽度文本报告滚动,但在那里抛出一些徽标,行和其他不可读的内容,有时可能在一个页面上花费几分钟。更不用说它如果试图重新定向它可以重复多达4次。相比之下,扫描仪随附的软件使用ABBYY OCR,可以在不到一分钟的时间内处理50多页,几乎完美地处理页面布局和文本方向(我意识到这就是为什么ABBYY要花钱)。不幸的是,使用这种扫描软件对于用户来说更复杂,并且仅包括步骤1-3。
我的问题是我是否应该以不同的方式处理这种情况,可能是将OCR /上传与扫描界面完全分开,如果有任何OCR包或我忽略的其他解决方案可以集成到Python应用程序中。我正在调用外部应用程序来完成这项工作会导致性能问题吗?
无论我在这里做什么,重要的是我可以控制第4步,因为要求用户手动设置每个上传文档的类型和元数据可能是个问题。
答案 0 :(得分:1)
您遇到的问题是Tesseract是OCR引擎,而不是页面布局分析软件。 tesseract website表示版本3.0可能包含页面布局分析。
我知道在以前的版本中,如果只有一列文字,它只能很好地响应。
我认为您需要进行一步1.5,进行一些布局分析,并尝试查找图像块,徽标和难以理解的文本。
您可能需要查看OCRfeeder,以查看他的解决方案。