2

アプリケーションの自動テストにTesseractOCR(pytesser経由)とPIL(Python Image Library)を使用してます

スクリーンショットを作成し、tesseractのおかげでテキストを取得して、表示されたテキストに問題がないことを確認しています。

最初はいくつか問題がありましたが、PILのバイキュービック補間のおかげでスクリーンショットのサイズを大きくしたので、うまく機能しているようです。

残念ながら、「0」と「O」の混同など、まだいくつかの間違いがあります。将来、他にも同様の問題が発生することが想像できます。

OCRを支援するために画像を準備するためのいくつかのテクニックがあるかどうか知りたいです。どんなアイデアでも大歓迎です。

前もって感謝します

4

4 に答える 4

1

恥知らずなプラグと免責事項: 私の会社は.NETで使用するためにTesseractをパッケージ化しています

TesseractはOKOCRエンジンです。それは多くを見逃す可能性があり、非テキストによってすぐに混乱します。そのためにできる最善のことは、テキストのみを取得するようにすることです。次善の策は、それにまともな二値化(そこに到達するための適応または動的しきい値)またはグレースケールを与えて、二値化を試みさせることです。

于 2009-08-26T18:56:15.660 に答える
1
  1. フォントを認識するようにtesseractをトレーニングします
  2. 画像をさらにきれいにし、文字の周りに十分な空きスペースを確保します
  3. 利益 :)

ここにいくつかの実例があります。

  • 最初の画像は元の画像です(クロップドパワーメーター番号)
  • 2番目の画像はGIMPでわずかにクリーンアップされた画像であり、正八胞体で約50%のOCR精度です。
  • 3番目の画像は完全にクリーンアップされた画像です-トレーニングなしで100%OCRが認識されます!

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

于 2013-11-05T12:17:16.937 に答える
0

0とOを区別するための簡単な解決策の1つは、両方を区別するフォントを選択することです(たとえば、0の中央にダッシュまたはドットがあります)。それはあなたのアプリケーションで受け入れられますか?

別の解決策は、テキストの文字ごとの分析の後に辞書ベースのステップを適用することです-認識されたテキストを何らかの形式のスペルチェッカーまたはバリデーターにフィードして、難しい文字を区別します。

たとえば、丸い記号の後に他の数字が続く場合はゼロになる可能性が高く、同じ記号の後に文字が続く場合は大文字のoになる可能性が高くなります。これは簡単な例ですが、より信頼性の高いOCRシステムを作成するためにコンテキストがどのように必要かを示しています。

于 2009-08-26T15:36:09.887 に答える
0

最良の条件下でも、OCRバリアントが忍び寄ります。最善のオプションは、テストを認識できるようにテストを設計することです。

于 2009-08-26T15:44:59.243 に答える