特定のフォントやフォントの高さに基づいて文字を見つけることができるように、画像を取得して画像認識を実行するための c++ ライブラリを知っている人はいますか? フォントを選択できないものでもいいでしょう (例: readLetters(Image image))。
5 に答える
私は最近これをよく調べています。あなたの最高は単に Tesseract です。OCR の上にレイアウト分析が必要な場合は、Ocropus を使用します (Ocropus は Tesseract を使用して OCR を実行します)。レイアウト分析とは、画像上のテキストの位置を検出し、ライン セグメンテーション、ブロック セグメンテーションなどを実行できることを指します。
Tesseract の実験を通じて、共有する価値のあるいくつかの本当に良いヒントを見つけました。基本的に、画像に対して多くの前処理を行う必要がありました。
- 入力画像を 300 dpi に拡大/縮小します。
- 画像から色を削除します。グレースケールが良いです。実際にディザしきい値を使用して、入力を白黒にしました。
- 画像から不要なジャンクを切り取ります。上記の 3 つすべてについて、netbpm (UNIX 用の一連の画像操作ツール) を使用して、必要なもののほぼ 100% の精度が得られるようにしました。
高度にカスタマイズされたフォントがあり、tesseract だけを使用する場合は、システムを「トレーニング」する必要があります。基本的には、トレーニング データの束をフィードする必要があります。これは tesseract-ocr サイトで十分に文書化されています。基本的に、フォントの新しい「言語」を作成し、-l パラメーターを使用して渡します。
私が見つけたもう 1 つのトレーニング メカニズムは、nueral net (bpnet) トレーニングを使用した Ocropus でした。優れた統計モデルを構築するには、大量の入力データが必要です。
Tesseract/Ocropus の呼び出しに関しては、どちらも C++ です。ReadLines(Image) ほど単純ではありませんが、確認できる API があります。コマンドラインから呼び出すこともできます。
特にお勧めはできませんが、お探しの用語は OCR (Optical Character Recognition) です。
これを行うための専門的なライブラリであるtesseract-ocrがあります。
そこのサイトから
Tesseract OCR エンジンは、1995 年の UNLV 精度テストで上位 3 つのエンジンの 1 つでした。1995 年から 2006 年の間はほとんど作業が行われませんでしたが、おそらく最も正確なオープン ソース OCR エンジンの 1 つです。
あなたが望むのはConjectureだと思います。以前は libgocr プロジェクトでした。数年使っていませんが、キーを設定すれば非常に信頼できるものでした。
Tesseract OCR ライブラリは、C および C++ ライブラリであり、かなり正確な結果を提供します。私の最初の結果は約 80% 正確でしたが、OCR に提供する前に画像に前処理を適用すると、結果は約 95% 正確でした。前処理とは:
1) ビットマップを 2 値化します (私には B&W の方が適していました)。それがどのようにできるか
2) 画像を 300 dpi にリサンプリングする
3) LZW TIFF や CCITT Group 4 TIFF などのロスレス形式で画像を保存します。