OCRソフトウェアは、次のような画像を値のリストに確実に変換できますか?
更新:
タスクの詳細は次のとおりです。
ユーザーがレポートを開くことができるクライアントアプリケーションがあります。このレポートには、値の表が含まれています。しかし、すべてのレポートが同じように見えるわけではありません-異なるフォント、異なる間隔、異なる色、おそらくレポートには、行/列の数が異なる多くのテーブルが含まれています...
ユーザーは、テーブルを含むレポートの領域を選択します。マウスを使用する。
次に、OCRツールを使用して、選択したテーブルを値に変換します。
ユーザーが長方形の領域を選択するときに、OCRプロセスに役立つ追加情報を要求し、値が正しく認識されていることの確認を要求できます。
当初は実験的なプロジェクトであるため、おそらくオープンソースのOCRツール、または少なくとも実験的な目的で費用がかからないツールを使用します。
簡単な答えは「はい」です。適切なツールを選択するだけです。
オープンソースがそれらの画像で100%に近い精度を達成できるかどうかはわかりませんが、ここでの回答に基づいて、トレーニングに時間をかけ、テーブル分析の問題やそのようなものを解決する場合はおそらくそうです。
ABBYYまたはその他のような商用OCRについて話すと、箱から出して99%+の精度を提供し、テーブルを自動的に検出します。トレーニングはなく、何もせず、機能します。欠点はオープンソースの場合、セットアップと維持に時間をかけることに反対する人もいますが、誰もが自分で決めることになります。
しかし、商用ツールについて話すと、実際にはより多くの選択肢があります。そしてそれはあなたが望むものに依存します。 FineReaderなどのボックス製品は、実際には入力ドキュメントをWordやExcellなどの編集可能なドキュメントに変換することを目的としています。実際にはWord文書ではなくデータを取得する必要があるため、別の製品カテゴリであるData Captureを調べる必要がある場合があります。DataCaptureは、基本的にOCRとページ上の必要なデータを見つけるための追加ロジックです。請求書の場合、会社名、合計金額、期日、表のラインアイテムなどになります。
データキャプチャは複雑なテーマであり、ある程度の学習が必要ですが、適切に使用することで、ドキュメントからデータをキャプチャするときに精度が保証されます。データクロスチェック、データベースルックアップなどに異なるルールを使用しています。必要に応じて、手動検証のためにデータを送信する場合があります。企業はData Captureアプリケーションを広く使用しており、毎月数百万のドキュメントを入力し、毎日のワークフローで抽出されたデータに大きく依存しています。
また、OCR SDKもちろん、認識結果へのAPIアクセスを提供し、データの処理方法をプログラムすることができます。
あなたがあなたの仕事をより詳細に説明するなら、私はあなたにどの方向がより簡単に行くのかについてアドバイスを与えることができます。
[〜#〜]更新[〜#〜]
つまり、基本的にはデータキャプチャアプリケーションですが、完全に自動化されていない、いわゆる「クリックツーインデックス」アプローチを使用しています。市場にはそのようなアプリケーションが数多くあります。画像をスキャンし、オペレーターが画像上のテキストをクリックして(または画像の周りに長方形を描画して)、フィールドをデータベースに入力します。処理する画像の数が比較的少なく、手動のワークロードが完全に自動化されたアプリケーションのコストを正当化するほど大きくない場合、これは良いアプローチです(そうです、異なるフォント、間隔、レイアウト、数で画像を実行できる完全に自動化されたシステムがあります)テーブルの行など)。
何かを開発するのではなく購入することにした場合、ここで必要なのはOCR SDKを選択することだけです。自分で作成するすべてのUIですよね?大きな選択は、オープンソースか商用かを決めることです。
私の知る限り、最高のオープンソースはtesseract OCRです。これは無料ですが、テーブル分析で実際に問題が発生する可能性がありますが、手動ゾーニングアプローチではこれは問題になりません。 OCRの精度について-精度を上げるためにフォントのOCRをトレーニングすることがよくありますが、フォントが異なる場合があるため、これは当てはまりません。したがって、tesseractを試して、どの精度が得られるかを確認することができます。これは、修正するための手動作業の量に影響します。
商用OCRはより高い精度を提供しますが、費用がかかります。とにかくあなたはそれが価値があるかどうかを確認する必要があると思います、またはテセラックはあなたにとって十分です。最も簡単な方法は、FineReaderのようなボックスOCR製品の試用版をダウンロードすることだと思います。そうすれば、OCR SDKの精度がどうなるかがよくわかります。
テーブルに常に境界線がある場合は、次の解決策を試すことができます。
- 各ページの水平線と垂直線を探します(黒いピクセルの長いラン)
- ライン座標を使用して画像をセルに分割する
- 各セルをクリーンアップします(境界線を削除し、しきい値を白黒にします)
- 各セルでOCRを実行する
- 結果を2D配列に組み立てる
そうでなければ、あなたの文書はボーダレステーブルを持っています、あなたはこの行をたどることができます:
光学式文字認識はかなり素晴らしいものですが、常に完璧であるとは限りません。最良の結果を得るには、できるだけクリーンな入力を使用することが役立ちます。最初の実験で、セルの境界線(長い水平線と垂直線)を削除している限り、ドキュメント全体に対してOCRを実行すると、かなりうまくいくことがわかりました。ただし、ソフトウェアはすべての空白を1つの空のスペースに圧縮しました。入力ドキュメントには複数の列があり、各列にいくつかの単語が含まれているため、セルの境界が失われていました。セル間の関係を維持することは非常に重要でした。そのため、可能な解決策の1つは、各セルの境界に「^」のような一意の文字を描画することでした。
この情報をすべてこのリンクで見つけ、Googleに「OCR to table」と尋ねました。著者は Python and Tesseract を使用した完全なアルゴリズム、両方のオープンソースソリューションを公開しました!
Tesseractパワーを試してみたい場合は、このサイトを試してみてください。
どのOCRについて話しているのですか?
そのOCRに基づいてコードを開発しますか、それとも既製品を使用しますか?
FYI: Tesseract OCR
ドキュメント読み取り実行可能ファイルを実装しているため、ページ全体をフィードでき、文字が抽出されます。それは空白をかなりよく認識します、それはタブ間隔で助けることができるかもしれません。
私は98年からスキャンしたドキュメントをOCRしています。これは、スキャンされたドキュメント、特に回転したページや傾斜したページを含むドキュメントで繰り返し発生する問題です。
はい、いくつかの優れた商用システムがあり、一部は適切に構成された後、素晴らしい自動データマイニング率を提供し、非常に劣化したフィールドに対してのみオペレーターの助けを求めます。私があなただったら、私はそれらのいくつかを当てにします。
商業的な選択があなたの予算を脅かす場合、OSSは手を貸すことができます。しかし、「無料の昼食はありません」。したがって、一連のドキュメントを処理するための手頃な価格のソリューションを足場するためには、一連のカスタマイズされたスクリプトに依存する必要があります。幸い、あなたは一人ではありません。実際、過去数十年、多くの人々がこれに対処してきました。だから、私見、この質問に対する最良かつ簡潔な答えはこの記事で提供されています:
その読書は価値があります!著者は彼自身の便利なツールを提供していますが、この記事の結論は、この種の問題を解決する方法についての良い考え方を提供するために非常に重要です。
「特効薬はない」 (フレッド・ブルックス、 The Mitical Man-Month )
それは本当に実装に依存します。
OCRの認識機能に影響を与えるいくつかのパラメーターがあります。
1。 OCRが十分にトレーニングされている-サンプルデータベースのサイズと品質
2。 「ゴミ」を検出するように訓練されているか(文字とは何かを知ることに加えて、文字ではないものを知る必要があります)。
3。 OCRのデザインとタイプ
4。ニューラルネットワークの場合、ニューラルネットワークの構造は、学習および「決定」する能力に影響を与えます。
したがって、自分で作成しない場合は、適切な種類が見つかるまで、さまざまな種類をテストするだけです。
また、テーブル内のテキストを認識する問題にも取り組んできました。 ABBYY Recognition ServerとABBYY FlexiCaptureの2つのソリューションがあります。RecServerはサーバーベースの大容量OCRツールです。大量のドキュメントを検索可能な形式に変換します。これらのタイプの使用のためのAPIで利用可能ですが、FlexiCaptureをお勧めします。FlexiCaptureは、ページ上のテーブルアイテムの自動検出を含む、テーブル形式内からのデータの抽出を低レベルで制御します。フロントエンドのない完全なAPIバージョン、または弊社が販売している市販バージョンで利用できます。詳細については、こちらからお問い合わせください。
他のアプローチを試すこともできます。 tesseract(または他のOCRS)を使用すると、各単語の座標を取得できます。次に、これらの単語を縦座標と横座標でグループ化して、行/列を取得します。たとえば、空白とタブスペースの違いを伝えるためです。良い結果を得るには少し練習が必要ですが、それは可能です。この方法を使用すると、テーブルが非表示のセパレータを使用している場合でも、行を使用せずにテーブルを検出できます。 Wordの座標は、テーブルの認識のための強固なベースです