概要
簡単に定義すると、OCRは、スキャンされたドキュメントと画像を機械可読テキストに変換する一連のコンピュータービジョンタスクです。 ドキュメント、請求書、領収書の画像を取得し、その中のテキストを見つけて、マシンがより適切に処理できる形式に変換します。 IDカードから情報を読み取ったり、銀行小切手で番号を読み取ったりする場合は、OCRがソフトウェアを駆動します。
小切手からさまざまな文字を読み取り、口座番号、金額、通貨、日付などを抽出する必要がある場合があります。しかし、どの文字がどのフィールドに対応するかをどうやって知るのでしょうか。 検針を抽出したい場合、検針がどの部分であるか、検針を識別するために印刷された数字はどのようにしてわかりますか?
学習方法 画像からテキストを抽出する または、OCRにディープラーニングを適用する方法は長いプロセスであり、別のブログ投稿のトピックです。 これの焦点は、OCRテクノロジーがどこにあるのか、OCR製品が何を提供するのか、何が不足しているのか、そして何をより良くできるのかを理解することです。
請求書、PDF、またはナンバープレートをデジタル化したいですか? に向かいます ナノネット 構築を開始します OCR 無料のモデル!
OCRランドスケープ
OCRは多くの人に解決された問題であると認識されていますが、実際には、オープンソースツールとして利用できる製品や技術の巨人によって提供される製品は完璧にはほど遠いものです。
多くの人が提供するAPIは、非常に限られた一連のユースケースの解決に限定されており、カスタマイズを嫌います。 多くの場合、OCRテクノロジーを使用することを計画しているビジネスでは、社内チームが OCR API 実際にユースケースに適用するために利用できます。 現在市場で入手可能なOCRテクノロジーは、ほとんどの場合、問題の部分的な解決策です。
現在のOCRAPIが失敗する場所
製品の欠点
カスタムデータの操作を許可しない – OCRを採用する際の最大の障害のXNUMXつは、すべてのユースケースに微妙な違いがあり、さまざまな種類のデータを処理するためのアルゴリズムが必要になることです。 ユースケースで良好な結果を得るには、最も処理するデータでモデルをトレーニングできることが重要です。 これは、利用可能なOCRAPIでは不可能です。 たとえば、実際のOCRに関連するタスク、交通標識の読み取り、出荷コンテナ番号の読み取りなどを検討してください。 現在のOCRAPI 垂直方向の読み取りを許可しない これにより、上の画像の検出タスクが非常に困難になります。 これらのユースケースでは、最も扱う画像の文字の境界ボックスを具体的に取得する必要があります。
かなりの量の後処理が必要 – 現在すべてのOCRAPI 与えられた画像からテキストを抽出する。 組織に役立つように、出力の上に構築するのは私たちの責任です。 請求書からテキストを取り出すのは良くありません。 それを使用する必要がある場合は、のレイヤーを構築する必要があります OCRソフトウェア その上に、日付、会社名、金額、製品の詳細などを抽出できます。このようなエンドツーエンドの製品へのパスは、入力画像の不整合や抽出されたテキストの構成の欠如による障害で埋められる可能性があります。 。 意味のある結果を得るには、OCRモデルから抽出されたテキストが インテリジェントに構造化 使用可能な形式でロードされます。 これは、組織が使用できるソフトウェアを構築するために既存のOCR APIを使用するには、社内の開発者チームが必要であることを意味する場合があります。
特定の制約でのみうまく機能する – 現在のOCR手法は、デジタルテキストを含むスキャンされたドキュメントでうまく機能します。 一方、手書きのドキュメント、一度に複数の言語のテキストの画像、低解像度の画像、新しいフォントとさまざまなフォントサイズの画像、または影のあるテキストの画像などは、OCRモデルで多くのエラーを引き起こす可能性があります。精度が低くなります。 カスタマイズを嫌うリジッドモデルは、少なくとも妥当な効果で実行できるテクノロジのアプリケーションの範囲を制限します。
技術的障壁
画像内の傾斜したテキスト – 現在の研究はそれを示唆しているが 物体検出 回転した画像を拡張データでトレーニングすることで操作できるはずですが、市場で入手可能なOCRツールのいずれも実際にパイプラインでオブジェクト検出を採用していないことに気付くのは驚くべきことです。 これにはいくつかの欠点があります。そのXNUMXつは、OCRモデルが傾斜した文字や単語を認識しないことです。 たとえば、ナンバープレートを読んでみましょう。 街灯に取り付けられたカメラは、車の距離と方向に応じて、異なる角度で移動中の車をキャプチャします。 このような場合、テキストは傾いて表示されます。 精度が上がると、交通法の執行が強化され、事故率が低下する可能性があります。
自然シーンでのOCR – OCRは歴史的にドキュメントを処理するように進化してきました。ドキュメントや事務処理の多くは最近コンピューターで行われていますが、さまざまな設定で撮影された画像を処理できるようにする必要があるユースケースがいくつかあります。 そのような例のXNUMXつは、出荷コンテナ番号の読み取りです。 古典的なアプローチでは、最初の文字を見つけて、その後に続く文字を探して横一列に並ぶ傾向があります。 このアプローチは、実際の画像でOCRを実行しようとする場合には役に立ちません。 これらの画像はぼやけてノイズが多い可能性があります。 それらのテキストはさまざまな場所に配置できます。フォントは、OCRモデルでこれまでに見たことのないものである可能性があり、テキストを傾けることができます。
手書きテキスト、筆記体フォント、フォントサイズ – OCR注釈プロセスでは、各文字を個別の境界ボックスとして識別する必要があり、そのようなデータを処理するようにトレーニングされたモデルは、手書きのテキストや筆記体のフォントに直面すると破棄されます。 これは、任意のXNUMXつの文字の間にギャップがあると、互いに簡単に分離できるためです。 これらのギャップは、筆記体フォントには存在しません。 これらのギャップがないと、OCRモデルは、接続されているすべての文字が実際にはXNUMXつのパターンであり、その語彙のどの文字の説明にも適合しないと見なします。 これらの問題は、 ディープラーニングを備えたOCRエンジン.
英語以外の言語のテキスト – によって提供されるOCRモデル でログイン & Microsoft 英語ではうまく機能しますが、他の言語ではうまく機能しません。 これは主に、十分なトレーニングデータが不足しており、言語ごとに構文規則が異なるためです。 母国語のデータにOCRを使用する予定のプラットフォームや企業は、悪いモデルや不正確な結果に苦しむ必要があります。 政府のプロセスを処理するフォームのように、複数の言語を含むドキュメントを一度に分析したい場合があります。 このような場合は、利用可能なOCRAPIでは処理できません。
ノイズの多い/ぼやけた画像 – ノイズの多い画像は、分類器を捨てて間違った結果を生成することがよくあります。 ぼやけた画像は OCRモデルを混乱させる 「8」と「B」の間、または「A」と「4」の間。 画像のノイズ除去は活発な研究分野であり、深層学習、コンピュータービジョンの分野で活発に研究されています。 ノイズに対してロバストなモデルを作成することは、 文字認識 画像の分類とノイズ除去の理解、および文字認識タスクへの適用により、精度を大幅に向上させることができます。
その場合、OCRの使用を検討する必要がありますか?
簡単な答えは「はい」です。
多くの事務処理や手作業が必要な場所ならどこでも、 OCRテクノロジー 画像およびテキストベースのプロセス自動化を有効にできます。 情報を正確にデジタル化できることで、ビジネスプロセスがよりスムーズに、より簡単に、より信頼性の高いものになり、これらのプロセスの実行に必要な人員が削減されます。 多くのフォーム、請求書、領収書などを処理する必要がある大規模な組織にとって、すべての情報をデジタル化し、データを保存および構造化し、検索および編集可能にすることは、紙のない世界に一歩近づきます。
次のユースケースについて考えてください。
ナンバープレート – ナンバープレート検出は、交通ルールの実装、タクシーサービスの駐車場での車の追跡、公共スペース、企業の建物、モールなどのセキュリティの強化に使用できます。
法的文書 – 宣誓供述書、判決、ファイリングなど、さまざまな形式のドキュメントを処理します。デジタル化、データベース化、検索可能にします。
テーブル抽出 –ドキュメント内のテーブルを自動的に検出し、各セルのテキスト、調査用の列見出し、データ入力、データ収集などを取得します。
バンキング – 小切手の分析、通帳の閲覧と更新、KYCコンプライアンスの確認、ローン、アカウント、その他のサービスのアプリケーションの分析。
メニューのデジタル化 – さまざまなレストランのメニューから情報を抽出し、swiggy、zomato、ubereatsなどのフードデリバリーアプリ用の同種のテンプレートに入れます。
ヘルスケア – 患者の医療記録、病歴、診断、投薬などをデジタル化し、医師の便宜のために検索できるようにします。
請求書 – 請求書、請求書、領収書の読み取りの自動化、製品、価格、日時データ、小売およびロジスティクス業界の会社/サービス名の抽出。
ビジネスプロセスの自動化 組織にとって恩恵であることが証明されています。 これにより、チームの透明性が高まり、さまざまなチーム間のコミュニケーションと調整が容易になり、ビジネススループットが向上し、従業員の定着率が向上し、顧客サービスと配信が強化され、従業員の生産性とパフォーマンスが向上しました。 自動化は、ビジネスプロセスをスピードアップすると同時に、コストを削減するのに役立ちました。 これにより、プロセスの混乱が少なくなり、信頼性が高まり、従業員の士気が高まりました。 デジタル化への移行は、今日の世界で競争力を維持するために必須です。
これらのOCRAPIには何が必要ですか?
OCRには多くの可能性がありますが、現在入手可能なほとんどの製品では、企業がテクノロジーを簡単に採用できるようにはなりません。 OCRが行うことは、テキストまたはスキャンされたドキュメントを含む画像を機械可読テキストに変換することです。 テキストをどうするかは、これらを使用する人々に任されています OCRテクノロジー、最初は良いことのように思えるかもしれません。 これにより、人々は、それを実現するために必要なリソースを費やす準備ができていれば、使用しているテキストを好きなようにカスタマイズできます。 しかし、スキャンされたドキュメントの読み取りや請求書や領収書の分析など、いくつかのユースケースを超えて、これらのテクノロジーは広く採用されることはありません。
優れたOCR製品は、次の点で改善されます。
入ってくる画像をどのように扱うか
- 必要な前処理を最小限に抑えていますか?
- 注釈プロセスを簡単にすることはできますか?
- 画像を受け入れるフォーマットはいくつありますか?
- 前処理中に情報が失われますか?
実世界の問題でどのように機能するか
- 精度はどうですか?
- どの言語でもうまく機能しますか?
- 傾斜したテキスト、野生のOCR、手書きのテキストなどの難しいケースはどうですか?
- モデルを絶えず改善することは可能ですか?
- 他のOCRツールやAPIとどのように競合しますか?
機械可読テキストの使用方法
- それは私たちがそれに構造を与えることを可能にしますか?
- 構造の反復が容易になりますか?
- 保持したい情報を選択して、残りを破棄できますか?
- ストレージ、編集、検索が簡単になりますか?
- データ分析が簡単になりますか?
ナノネットとOCR
我々で ナノネット これらの問題を解決するような製品の構築に取り組んできました。 OCRのパイプラインを文字認識としてだけでなく、オブジェクトの検出と分類のタスクとして使用することで、パイプラインを製品化することができました。
ただし、他のOCR APIよりもナノネットを使用する利点は、精度が向上するだけではありません。 使用を検討する必要があるいくつかの理由があります ナノネット OCR API.
自動化されたインテリジェントな構造化フィールド抽出 – 組織内の領収書を分析して、償還を自動化するとします。 領収書をアップロードできるアプリがあります。 このアプリは、これらの領収書のテキストを読み取り、データを抽出して、トランザクションID、日付、時刻、利用可能なサービス、支払った価格などの列を含むテーブルに配置する必要があります。この情報は、合計を計算するデータベースで常に更新されます。月末の各従業員への払い戻し。 ナノネットはそれを簡単にします テキストを抽出、関連データを必要なフィールドに構造化し、画像から抽出された無関係データを破棄します。
いくつかの言語でうまく機能します –英語以外のデータを扱う会社の場合、実際に約束したものを提供するOCRAPIを探すのに時間を無駄にしているように感じるかもしれません。 カスタムトレーニングとモデルのさまざまな語彙をニーズに合わせて許可することで、ユースケースに固有の自動化されたエンドツーエンドのパイプラインを提供できます。
野生のテキストでうまく機能します – 遠隔地でのナビゲーションに役立つ道路標識の読み取り、資材を追跡するための輸送コンテナ番号の読み取り、交通安全のためのナンバープレートの読み取りは、野生の画像を含むユースケースのほんの一部です。 Nanonetsは、オブジェクト検出方法を利用して、画像内のテキストの検索を改善し、コントラストレベル、フォントサイズ、角度が異なる画像でもテキストを分類します。
自分のデータをトレーニングして、ユースケースで機能するようにします – 以前のOCRサービスがワークフローに強制した硬直性を取り除きます。 このテクノロジーで何が可能かを考える必要はありません。 Nanonetsを使用すると、ビジネスのためにそれを最大限に活用する方法を見つけることに集中することができます。 独自のデータをトレーニングに使用できることで、一度に複数の言語を操作するなど、アプリケーションの範囲が広がり、テストデータがトレーニングデータに非常に似ているため、モデルのパフォーマンスが向上します。
継続学習 – 輸送サービスを新しい州に拡大していると想像してみてください。 トラックのナンバープレートの新しい言語が原因で、将来モデルが陳腐化するリスクに直面しています。または、動画や画像の露骨な表現をモデレートする必要のある動画プラットフォームがある場合もあります。 新しいコンテンツでは、モデルの予測があまり信頼できない、または場合によっては誤っているという、より多くのエッジケースに直面します。 そのような障害を克服するために、 ナノネット OCR API 新しいデータを使用してモデルを簡単に再トレーニングできるため、どこでもより速く操作を自動化できます。
開発者の社内チームは必要ありません – 開発者を雇ったり、ビジネス要件に合わせてテクノロジーをパーソナライズするための人材を獲得したりすることを心配する必要はありません。 Nanonetは、ビジネスロジックから、インフラストラクチャ要件を気にすることなくビジネスワークフローに簡単に統合できる展開されたエンドツーエンドの製品まで、要件を処理します。
Nanonetを使用したOCR
Nanonets OCR APIを使用すると、OCRモデルを簡単に構築できます。 データをアップロードして注釈を付け、モデルをトレーニングするように設定し、ブラウザーベースのUIを介して予測を取得するのを待つことができます。
1. GUIの使用: https://app.nanonets.com/
以下の手順に従って、Nanonets-OCR-APIを使用することもできます。
2. NanoNets APIの使用: https://github.com/NanoNets/nanonets-ocr-sample-python
以下では、Nanonets APIを使用して独自のモデルをトレーニングするためのステップバイステップガイドを9つの簡単なステップで示します。
ステップ1:レポのクローンを作成する
git clone https://github.com/NanoNets/nanonets-ocr-sample-python
cd nanonets-ocr-sample-python
sudo pip install requests
sudo pip install tqdm
ステップ2:無料のAPIキーを取得する
から無料のAPIキーを取得 https://app.nanonets.com/#/keys
ステップ3:APIキーを環境変数として設定する
export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE
ステップ4:新しいモデルを作成する
python ./code/create-model.py
注:これにより、次のステップに必要なMODEL_IDが生成されます
ステップ5:モデルIDを環境変数として追加する
export NANONETS_MODEL_ID=YOUR_MODEL_ID
ステップ6:トレーニングデータをアップロードする
検出したい物体の画像を収集します。 フォルダーでデータセットの準備ができたら images
(画像ファイル)、データセットのアップロードを開始します。
python ./code/upload-training.py
ステップ7:モデルのトレーニング
画像がアップロードされたら、モデルのトレーニングを開始します
python ./code/train-model.py
ステップ8:モデルの状態を取得する
モデルのトレーニングには約30分かかります。 モデルがトレーニングされると、メールが届きます。 その間、モデルの状態を確認します
watch -n 100 python ./code/model-state.py
ステップ9:予測を行う
モデルがトレーニングされたら。 モデルを使用して予測を行うことができます
python ./code/prediction.py PATH_TO_YOUR_IMAGE.jpg
まとめ
OCRは広く研究されている問題ですが、一般に、ディープラーニングアプローチがこの分野の研究を推進するために前面に出るまで停滞していた研究分野です。 現在利用可能な多くのOCR製品は、ディープラーニングベースのアプローチをOCRに適用するように進んでいますが、ユーザー、企業、またはその他の組織にとってOCRプロセスを実際に簡単にする製品は不足しています。
コードを書くのが面倒です。GPUにお金をかけたくないですか? に向かいます ナノネット そして建てる コンピュータビジョン 無料のモデル!
参考文献
アップデート:
情報抽出における文字認識の重要性に関する読み物を追加しました。
ソース:https://nanonets.com/blog/ocr-apis-to-extract-text-from-images/