最近、検索可能なドキュメントをスキャンして、ドキュメント管理システムであるKnowledgeTreeにアップロードするためのインターフェイスをまとめました。このプロセスのさまざまな部分に対応する多数の個別のツールにアクセスできますが、ユーザーが物事をシンプルに保つために、すべてを1つのインターフェイスに統合したいと思いました。
プラットフォームは次のとおりです。
# 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が特定の種類のドキュメントで非常に遅いことを除いて、それは美しく機能します。基本的な固定幅のテキストレポートを順番に表示しますが、ロゴ、線、その他の判読できないコンテンツをいくつかスローし、1ページに数分かかる場合があります。向きを変えようとすると、それを最大4回繰り返す可能性があることは言うまでもありません。それに比べて、スキャナーに同梱されているソフトウェアはABBYY OCRを使用しており、ページレイアウトとテキストの向きをほぼ完全に処理して、1分以内に50ページ以上を処理できます(ABBYYに費用がかかるのはそのためです)。残念ながら、このスキャンソフトウェアの使用はユーザーにとってより複雑であり、それ自体で手順1〜3しかカバーしていません。
私の質問は、おそらくOCR /アップロードをスキャンインターフェイスから完全に分離することによって、これに別の方法でアプローチする必要があるかどうか、Pythonアプリケーションに統合できるOCRパッケージまたは他のソリューションを見落としているかどうかです。作業を行うために外部アプリケーションを呼び出しているという事実は、パフォーマンスの問題を引き起こしますか?
ここで何をするにしても、アップロードされた各ドキュメントのタイプとメタデータを手動で設定するようにユーザーに要求することは問題になる可能性があるため、ステップ4を制御できることが重要です。