我最近整理了一个界面,用于扫描和上传可搜索文档到我们的文档管理系统 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 步,因为要求用户手动设置每个上传文档的类型和元数据可能是个问题。