web-dev-qa-db-ja.com

Tesseractは単一の文字を認識しません

表現方法:

  1. ペイントで新しい画像を作成する(任意のサイズ)
  2. この画像に文字Aを追加します
  3. 認識してみてください-> tesseractは文字を見つけられません
  4. この文字をこの画像に5〜6回コピーして貼り付けます
  5. 認識してみてください-> tesseractはすべての文字を見つけます

どうして?

15
int_32

「ページセグメンテーションモード」を「単一文字」に設定する必要があります。

たとえば、Androidでは、次のようにします。

api.setPageSegMode(TessBaseAPI.pageSegMode.PSM_SINGLE_CHAR);
18
Marco Bonifazi

Tesseractのページセグメンテーションモードを「単一文字」に設定する必要があります。

9
rmtheis

これ見たことある?

https://code.google.com/p/tesseract-ocr/issues/detail?id=581

バグリストには、「もう問題ではない」と表示されます。

  • 必ず高解像度の画像を用意してください。
  • 画像のサイズを変更する場合は、DPIを高く保ち、サイズを小さくしすぎないようにしてください。
  • 必ず テッセラクトシステムをトレーニングする
  • _init Tesseract_の前にbaseApi.setVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");コードを使用します
  • また、 OCRで使用するフォント を調べることもできます。
7
TryTryAgain

その構成を行うためのPythonコードは次のようになります。

import pytesseract
import cv2
img = cv2.imread("path to some image")
pytesseract.image_to_string(img, config="-c tessedit"
                                             "_char_whitelist=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
                                             " --psm 10"
                                             " -l osd"
                                             " "))

--psmフラグは、ページセグメンテーションモードを定義します。

正八胞体の文書によると、10 手段 :

画像を1文字として扱います。

したがって、単一の文字を認識するために使用する必要があるのは:--psm 10 国旗。

2