私が働いている会社は、現在の OCR エンジン (Nuance の OmniPage) を Tesseract などのオープンソースの代替エンジンに切り替えることを検討しています。
いくつかのパフォーマンス ベンチマーク (実行速度と精度) を取得して両方を比較することを期待して、Tesseract 3.2 C API のパフォーマンスを把握するためだけに動作する非常に単純なプログラムを取得しました。
私の最初の観察結果(一部は間違っている可能性があります。コメントで私の解釈を自由に修正してください):
- 精度は良好でした。現行エンジンとの相性は抜群です。
- 出力形式は、テキストが元の画像のどこにあったかのプレビューではなく、認識されたテキストのみを提供します。hOCR 形式を採用して、もう少し視覚的に魅力的な形式に変換する可能性はありますが、商用利用に適した Windows 上のオープンソース コンバーターを見つけることができませんでした (ExactCODE の hocr2pdf からソースまたは実行可能ファイルを見つけることができませんでした)。)。検出された bbox を段落ごとに変換し、HTML タグの 、 、 、および属性を設定する要素を追加するだけの簡単なスクリプトを作成できるので、この制限は軽微です。
style
left
right
width
height
position
- Leptonica (Tesseract で使用される画像ライブラリ)は、複雑な PDF ファイルの読み取りをサポートしていないようです。これにより移行に多少の開発オーバーヘッドが追加されますが (すぐに使用できるものではないため)、PDF ファイルから画像を抽出するためのモジュールが既に製品に含まれているため、それほど大きな問題ではありません。
- 実行速度は非常に遅かった(少なくとも Nuance の OmniPage と比較して)。この質問の最後にあるファイルを変換するのに、私のマシンで Tesseract が 2 分強かかりました。Nuance の OmniPage は、10 個の大きなドキュメント (提供された画像を含む) を変換するのに 3 分 30 秒もかかりませんでした。(正確な長さは覚えていませんが、提供された画像だけで明らかに〜15秒未満でした)
他の要因だけであれば、移行はおそらくそれほど問題なく実行できます。ただし、このパフォーマンスの制限は致命的です。
それから、私は自分自身に考えました: Tesseract は、商用の同等物と比較して、どうしてそれほどパフォーマンスが悪いのでしょうか? Google は間違いなくパフォーマンスを追求するでしょう。
だから、私は問題が私から来ているとほぼ確信しています。私は API を正しい方法で使用していないか、必要な設定を変更していないか、現在欠けている何かを変更していません。
Tesseract に関連するテスト プログラムのセクションは次のとおりです。
#include "baseapi.h"
#include "allheaders.h"
// ...
// Tesseract initialization
tesseract::TessBaseAPI api;
api.Init("", "eng+deu+fra");
api.SetPageSegMode(tesseract::PageSegMode::PSM_AUTO_OSD);
api.SetVariable("tessedit_create_hocr", "1"); // for the hOCR output
// ...
// OCR
PIX* pixs = pixRead(image_path.c_str());
STRING result;
api.ProcessPages(image_path.c_str(), NULL, 0, &result);
// ... write the result to a file
hocr フォーマットの作成を有効にせずに、さまざまなページ分割モードを試してみましたが、以前と同じようにがっかりしました。また、画像に前処理スクリプトを適用して、検出に少し役立つかどうかを確認しましたが、成功しませんでした。テスト目的で辞書を 1 つだけ使用してみましたが、パフォーマンスに大きな影響はありませんでした。複数ページの TIF ファイルと単一ページの TIF 画像でも同じパフォーマンスの問題が発生し、他の形式はまだ試していません。
VerySleepy を使用したアプリケーションのクイック プロファイリングでは、実行時間のほとんどが、バウンディング ボックスに関連するnew
およびに費やされていることがわかりました。delete
商用製品ではなくオープンソース ライブラリに移行してほしいので、API のパフォーマンスを向上させるために誰かが助けてくれるとありがたいです。現在のエンジンと同様のパフォーマンス結果を得るために劇的な改善が得られない限り、移行は行われません。
貴重な時間をありがとうございました。
ここに私のテストセットの画像があります: