8

私のTesseractが数字を含む一部の画像を認識できない理由と、それについて何かできることがあれば、誰かが教えてくれることを望んでいました. すべてがテストどおりに機能しており、必要なのは数字だけなので、英語のパターンで管理できると思っていましたが、7 セグメント ディスプレイから始めなければなりませんでした。

追加された画像で多くの問題を抱えていますが、独自の認識アルゴリズムの作業を開始する必要があるかどうか、または Tesseract 用に独自のデータセットを作成できるかどうかを知りたいです。制限は Tesseract にありますか?

試したこと:psmをone_line、one_word、one_charに設定しようとしました(そして画像を切り刻みました)。one_line と one_word では大きな変化はありませんでした。one_char を使用すると、認識が少し良くなりましたが、間隔が大きいために余分な数字が付けられ、それが台無しになりました。添付の画像を見ると、ゼロ.jpg結果は 04 になりました。私自身二値化を行ったが、これにより認識が低下し、非常にリソースを消費していた. 写真を反転しようとしましたが、tesseract ではまったく違いはありません。

とりわけ、処理するために必要な写真を添付し​​ました。

画像についての説明:

decodethisimage_sevenテッセラクトが問題なく認識できる画像ですが、動作中の画像を中心にアプリを構築するのに便利なように言葉で作成されています。

decodethisimage_eightimage_seven に一致する実際の画像です。しかし、これを認識できません。

decodethisimage_four2認識してもらいたい別の画像です。はい、それをねじることができないことを知っています。テスト時にねじを外しました(ねじはここでの用語=="まっすぐにする"と考えてください)。

4

3 に答える 3

2

私はあなたを助けるかもしれないいくつかのオプションを知っています:

  1. 画像の境界線とテキストの間に余分なスペースを追加します。画像内のテキストが端に配置されている場合、Tesseract はうまく動作しません。
  2. 画像を複製します。たとえば、単語「foobar」で OCR を実行している場合、画像を複製して「foobar foobar foobar foobar foobar」を tesseract に送信すると、結果が向上します。
  3. Google for font trainingand image binarizationfor tesseract.

モバイル デバイスの内蔵カメラはほとんどの場合、低品質の画像 (ぼやけ、ノイズ、ゆがみなど) を生成することに注意してください。OCR 自体はリソースを消費するプロセスであり、それに適切な画像前処理を追加すると、ローエンドおよびミッド モバイルデバイス (Android を搭載している可能性が高い) では、パフォーマンスが予期せず低下したり、リソースが不足したりする可能性があります。無料/研究プロジェクトでは問題ありませんが、商用アプリを計画している場合は、より優れた SDK の使用を検討してください。

詳細については、この質問をご覧ください: OCR for android

于 2012-04-17T09:36:22.433 に答える
2

Tesseract はセグメンテーションを行いません。Tesseract は、実際の tesseract アルゴリズムの前に画像のしきい値処理を行います。しきい値処理後、画像にエッジやアーティファクトが残る場合があります。

画像を手動で白黒に変更して、tesseract が出力として返すものを確認してください。

画像に (自動的に) しきい値を設定し、tesseract が出力として返すものを確認してください。しきい値処理の出力があまりにも悪いため、tesseract が悪い出力を与える可能性があります。

4 番目の画像は、しきい値 (黒の背景、灰色がかった背景、白い文字の 3 色) が​​原因で失敗する可能性があり、しきい値は (黒の背景、灰色がかった背景) の間である可能性があります。

一般に、Tesseract は素敵な白黒画像を必要とします。より良い結果を得るには、画像の前処理が必要になる場合があります。

最初の画像 (結果が "04") については、ボックスの結果 (文字 + 認識された文字を含むボックスの座標) を確認してください。「0」は、4 x 4 ピクセルのブロブのような小さなアーティファクトである可能性があります。

于 2012-05-14T14:56:09.130 に答える
1

javaocr を試してみてください ( http://sourceforge.net/projects/javaocr/、はい、私は開発者です )

ただし、正式なリリースはなく、ソースを探す必要があります (良いニュース: サンプラー、オフライン トレーナー、認識アプリケーションを含む動作中の Android サンプルがあります)。

フォントが 1 つだけの場合は、かなり良い結果が得られます (同じフォントの数字で最大 99.96 の認識率に達しました)。

PS: これは純粋な Java であり、不変モーメントを使用してマッチングを実行します (したがって、スケーリングと回転に問題はありません)。かなり効果的な二値化もあります。

実際に見てみましょう:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwxLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

于 2012-04-17T09:55:25.557 に答える