OCR ソフトウェアに成功の可能性を最大限に与えるにはどうすればよいでしょうか?
質問
使っています Tesseract OCR (経由 パイテッサー) と PIL (Python Image Library) を使用してアプリケーションの自動テストを実行します。
スクリーンショットを作成し、tesseractのおかげでテキストを取得することで、表示されたテキストに問題がないことを確認しています。
最初はいくつか問題がありましたが、PIL のバイキュービック補間のおかげでスクリーンショットのサイズが大きくなったので、うまく機能するようになりました。
残念ながら、「0」と「O」を間違えるなど、まだいくつかの間違いがあります。将来的にも同様の問題が発生することが想像できます。
OCRを支援するために画像を準備するためのいくつかのテクニックがあるかどうか知りたいです。あらゆるアイデアを歓迎します。
前もって感謝します
解決
恥知らずなプラグや免責事項: .NETで使用するために私の会社のパッケージたTesseract
たTesseractはOK OCRエンジンです。それは多くを欠場することができ、容易に非テキストによって混乱します。あなたはそれのためにできる最善のことは、それがテキストのみを取得していることを確認することです。次善の策はそれを何かsanely二値化(適応または動的閾値そこに着くために)またはグレースケールを与え、それが二値化を行うために試してみましょうすることです。
他のヒント
- tesseract をトレーニングしてフォントを認識させる
- 画像を非常にきれいにし、文字の周囲に十分な空きスペースを確保します
- 利益 :)
ここでは実際の例をいくつか紹介します。
- 最初の画像は元の画像です(パワーメーターの数字がトリミングされています)
- 2 番目の画像は GIMP でわずかにクリーンアップされた画像で、tesseract の OCR 精度は約 50% です
- 3 番目の画像は完全にクリーン化された画像です。トレーニングなしで 100% OCR が認識されます。
でも最高の条件でOCR変異体はあなたにこっそります。あなたの最良のオプションは、それらを認識するようにテストを設計することになります。
0とOを区別するために、1つの簡単な解決策は、両方(:0はその真ん中にダッシュやドットを持っているなど)を区別するフォントを選択することです。それはあなたのアプリケーションに受け入れられるだろうか?
難しい文字を区別するために、スペルチェッカーまたはバリデータのいくつかのフォームに認識されたテキストを供給 -別の解決策は、テキストの文字単位の分析後の辞書ベースのステップを適用することです。
文字が続く同じシンボルが資本Oである可能性が最も高いである例えば、他の数字が続くラウンドシンボルは、ゼロである可能性が最も高いです。それは簡単な例だが、それは、コンテキストがより信頼性の高いOCRシステムを作る必要がある方法を示しています。