PDF の OCR

ソースノード: 879686

概要

1970年代にコンピュータが広く使用され、1993年にPDFが発明されて以来、テキストファイルをデジタル形式で保存することは、従来の紙よりも徐々にではあるが着実に主流になっています。 この無敵のエッジは、デジタルテキストファイルを数秒で世界中に簡単に送信できるインターネットの利便性をヒッチハイクすることによって作成され、さらに強化されました。 今日では、機械でエンコードされたテキストがPDFを介して保存および共有されるだけでなく、手書きのドキュメントの紙も、さらに処理および配布するためにそのような形式にスキャンされます。

ただし、この新たな傾向は、現在進行中の新しい研究領域であるPDF光学式文字認識(OCR)に光を当てています。 OCRは、スキャンまたは手書きのテキストを機械でエンコードされたテキストに変換するプロセスであり、プログラムでさらに処理および分析するために使用できます。 OCRの適用範囲は広いですが(道路標識の画像から正式なテキストドキュメントまで)、この記事では特にPDF OCRの領域、特にスキャンおよび手書きの紙のPDFに焦点を当て、さまざまな言語での技術とプログラムについて説明します。仕事。 参考のために、PDFOCR用のいくつかの市販ソフトウェアの詳細な概要と比較をさらに示します。


PDFから情報を抽出するためのOCRソリューションをお探しですか? ナノネットを与えるより高い精度、より高い柔軟性、後処理、および幅広い統合セットのためのスピン!


OCRソリューションの進歩

OCRのコード、詳細、および利点について説明する前に、まず、関連するテクノロジの進歩を紹介することにより、OCRがどのように機能するかの概念について説明します。

従来のOCR

このようなタスクに必要な精度を満たすディープラーニングの前に、スキャンしたドキュメントをさらに計算するために電子変換することは、通常、次のXNUMXつの簡単な手順で実行されます。

  1. 既知の文字のデータベースを収集します。
  2. フォトセンサーを使用して、スキャンしたドキュメントから個々の文字を収集して分離します。
  3. フォトセンサーから取得した属性のセットをデータベースの物理属性と比較します。
  4. それに応じて、属性の各セットを最も類似性の高い既知の文字に変換します。

従来のアプローチはほとんどの場合効果的であるように見えますが、固有のルールベースの制限に対して脆弱です。 OCRの重要な中間ステップのXNUMXつは、テキストのセット/グループから単一の文字または記号を正常に抽出することです。 この抽出を高精度にするためには、特定のテンプレートまたはルール(つまり、事前設定されたフォントサイズ/スタイル)が必要です。 精度を高めるためにますます多くのルールを課すと、OCRの過剰適合のジレンマが発生するか、特定のスタイルの文章でのみ修正されます。 OCRが完全にルールベースである場合、スキャンプロセス中の照明の不整合もエラーにつながります。

さらに、手書きを扱う場合、ルールベースの属性比較も不十分です。 コンピューターで生成されたフォントは、ほとんどの場合、明白で相互比較が容易な属性で固定されています。手書きフォントは正反対であり、バリエーションが無制限であるため、分類がはるかに困難です。 手作りのキャラクターは毎回少しずつ違うので、データベースの一部として含めることもできません。 これには、多くの場合、単純な属性マッチングに加えて、より高度なアルゴリズムを実行するためにOCRが必要です。

最後に、従来のアプローチには、複数の言語の障壁も存在します。 多くの言語は、類似または同一の記号を採用しています。 すべてのシンボルをデータベースに保存すると、属性マッチングを実行するだけではXNUMXつのシンボルの違いを区別できなくなり、最終的に、従来のアプローチはモデルごとにXNUMXつの言語に制限されることがよくあります。

最近のディープラーニングの時代に照らして、ありがたいことに急速に成長しているハードウェア計算機能によってもたらされた新しいOCRは、テキストの抽出プロセスと解釈の両方の段階で学習モデルを組み込んでいます。

ディープラーニングベースのOCRエンジン

機械学習の分野の主要な分野であるディープラーニングは、多くの有名な科学者がそれを最前線に押し上げることで大きな人気を得ています。 従来のエンジニアリングでは、私たちの目標は、特定の入力から出力を生成するシステム/関数を設計することです。 一方、ディープラーニングは、入力と出力に依存して、いわゆる、いわゆる新しい目に見えないデータに拡張できる中間関係を見つけます。 ニューラルネットワーク.

ニューラルネットワークアーキテクチャ

ニューラルネットワーク、または多層パーセプトロンは、人間の脳が学習する方法を模倣しています。 ネットワーク内の各ノード、つまりニューロンは、「アクティブ化」するための情報を受け取るという点で、生物学的ニューロンのようなものです。 ニューロンのセットは層を形成し、複数の層が積み重なってネットワークになり、情報を使用して予測を生成します。 予測は、分類問題のクラスの予測から、オブジェクト検出タスクのアイテムの境界ボックスまで、すべての形式にすることができます。これらはすべて、以前の文献と比較して最先端を達成しています。 OCRのタスクでは、XNUMXつのタイプの出力とXNUMXつのジャンルのネットワークが頻繁に適用されます。

  • 畳み込みニューラルネットワーク(CNN) – CNNは、特にコンピュータービジョンの分野で、今日使用されているネットワークの最も支配的なセットのXNUMXつです。 これは、画像をスライドして特徴を抽出する複数の畳み込みカーネルで構成されます。 最後に従来のネットワーク層を伴うCNNは、特定の画像から特徴を取得して予測を実行することに非常に成功しています。 このプロセスはさらに、OCRプロセスでさらに分類するために、境界ボックスを検索し、文字の属性を検出するタスクに移すことができます。
  • 長短期記憶(LSTM) – LSTMは、主にシーケンス入力に適用されるネットワークのファミリーです。 直感は単純です。シーケンシャルデータ(天気、株式など)の場合、新しい結果は以前の結果に大きく依存する可能性があるため、新しい予測を実行する際の入力機能の一部として、以前の結果を常にフィードフォワードすることが有益です。 。 OCRの場合、以前に検出された文字は、次の文字を予測するのに非常に役立ちます。文字のセットは通常、組み合わせると意味があります(たとえば、英語の文字「g」は「do」の後に来る可能性が高いため)それらの類似した属性にもかかわらず、数字「9」よりも)。

ディープラーニングを組み込んだOCRの主なタスクに加えて、ルールベースのアプローチを排除するための多くの前処理段階も、繁栄しているニューラルネットワークテクノロジーの恩恵を受けています。

  • ノイズ除去 –ドキュメントが不適切にスキャンされると、ルールベースの方法が簡単に不十分になる可能性があります。 OCRテクノロジーによって採用された最近のアプローチは、生成的敵対的ネットワーク(GAN)を適用して入力を「ノイズ除去」することです。 GANは、ジェネレータとディスクリミネータのXNUMXつのネットワークで構成されます。 ジェネレータは、ディスクリミネータが実際の入力と生成された入力を区別するための新しい入力を絶えず生成し、ジェネレータが理想的なコンテンツの作成を絶えず改善できるようにします。 この場合、GANは、ノイズ除去されたドキュメントとノイズが発生したドキュメントのペアからトレーニングされます。ジェネレータの目標は、ノイズ除去されたドキュメントをできるだけグラウンドトゥルースに近い形で生成することです。 アプリケーションフェーズでは、GANは、十分にトレーニングされていれば、すべての入力で使用して、スキャンが不十分なドキュメントを微調整できます。
  • 文書の識別 – OCRタスク、特にPDFのOCRタスクは、フォームやドキュメントからデータを適切に抽出する目的でよく使用されます。 したがって、OCRマシンが現在処理しているドキュメントのタイプを知ることで、データ抽出の精度が大幅に向上する可能性があります。 最近の技術では、シャムネットワークまたは比較ネットワークを組み込んで、ドキュメントを既存のドキュメント形式と比較し、OCRエンジンがドキュメントの分類を事前に実行できるようにしています。 この追加の手順は、テキスト検索の精度を向上させることが経験的に示されています。

要約すると、OCRの進歩は、ハードウェア機能の指数関数的成長とディープラーニングによって十分に恩恵を受けてきました。 PDF OCRは、多くのアプリケーションで驚くべき標準の精度を達成しました。


PDFから情報を抽出するためのOCRソリューションをお探しですか? ナノネットを与えるより高い精度、より高い柔軟性、後処理、および幅広い統合セットのためのスピン!


PDFOCRソフトウェアのアプリケーション

OCRの主な目標は、数値であろうと実際の数値であろうと、非構造化形式からデータを取得することです。 検索が成功し、非常に正確である場合、プログラムは、テキストの認識や解釈などの作業タスク、特に数値分析やコンテキスト分析にOCRを利用できます。

数値データ分析

PDFに数値データが含まれている場合、OCRはそれらを抽出して統計分析を実行するのに役立ちます。 具体的には、テーブルまたはキーと値のペア(KVP)の抽出を利用したOCRを適用して、特定のテキストのさまざまな領域から意味のある数値を見つけることができます。 次に、さまざまなアプリケーションのモデルに、統計的手法または機械学習手法(KNN、K-Means、線形/ロジスティック回帰)を採用できます。

テキストデータの解釈

一方、テキストデータ処理では、プログラムが単語の背後にある「意味」を理解することを最終的な目標として、より多くの計算段階が必要になる場合があります。 テキストデータをその意味的な意味に解釈するこのようなプロセスは、自然言語処理(NLP)と呼ばれます。

PDFOCRの利点

PDF OCRは、アプリケーションレベルで多くの目的を果たします。 次のセクションでは、個人的な使用から企業の使用までのいくつかのユースケースの例について説明します。

個人的なユースケース

PDF OCRは、IDのスキャンや個人的な資金調達などの煩わしいタスクを処理するときに非常に便利です。

多くの場合、個人IDは、さまざまなアプリケーションに送信するためにPDF形式に変換する必要があります。 これらの身分証明書には、生年月日やID番号など、さまざまな目的で繰り返し入力する必要のある情報が含まれているため、ID全体で一致するフィールドと対応する値を見つける高精度のPDFOCRが役立ちます。些細な手動タスクの実行に役立ちます。 必要な作業は、不整合がないか再確認することだけです。

パーソナルファイナンスは、大量の肉体労働を必要とする別のプロセスです。 Excelとスプレッドシートの開発により、個人の予算編成などのタスクはすでに簡単になりましたが、OCRとPDF請求書のデータの抽出により、プロセスがさらに促進される可能性があります。 このデータは、実行する前のセクションで説明したように、分析のために自動的にスプレッドシートに入れることができます。 元のキー入力時間を簡単に利用して、より良い財務計画を考えることができます。

ビジネスユースケース

大企業も小規模組織も、同様の形式に従って何千もの事務処理を処理する必要があります。これらは非常に労働集約的でありながら非生産的です(つまり、すべての労働力はブレインストーミングの必要が少ないものに使用されます)。 自動化されたドキュメント分類と調査の収集/分析は、OCRが役立つところです。

OCRを使用すると、コンピューターはスキャンしたテキストをマシンでエンコードされたテキストに変換できます。 変換されたテキストの内容は、さまざまな役割の申請であろうと、承認待ちのフォームであろうと、ドキュメントの分類に使用できます。 十分に訓練されている場合、OCRは最小限のエラーにつながる可能性があります。 ビジネスの観点からは、人件費も大幅に削減される可能性があります。

組織が現在の製品や計画を改善するためにしばしば必要とする調査やフィードバックの観点から、OCRも重要な役割を果たします。 データは迅速に抽出され、統計分析のために広範囲に評価されます。 適切に設計されていれば、手書きのテキストでも自動的に抽出および分析される可能性があります。


PDFから情報を抽出するためのOCRソリューションをお探しですか? ナノネットを与えるより高い精度、より高い柔軟性、後処理、および幅広い統合セットのためのスピン!


簡単なチュートリアル

PDF OCRは、実際には個人的に簡単にプログラムできます。 以下は、PDFでOCRを実行するための簡単なパイプラインです。

PDFから画像への変換

事前にトレーニングされたOCRをサポートする複数の言語のライブラリとAPIが多数あります。 ただし、それらのほとんどは、直接PDFではなく画像で処理します。 したがって、次の手順を簡略化するために、文字認識を実行する前にPDFを画像形式に前処理することができます。

そのために最も一般的に使用されるライブラリのXNUMXつは、 pdf2画像 Python用のライブラリ。次のコマンドで簡単にインストールできます。

pip install pdf2image

その後、ライブラリをインポートし、XNUMX行のコードのいずれかを使用して、次のようにPIL形式の画像を取得できます。

from pdf2image import convert_from_path, convert_from_bytes
from pdf2image.exceptions import ( PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError
) images = convert_from_path('/home/belval/example.pdf')
images = convert_from_bytes(open('/home/belval/example.pdf','rb').read())

コードの詳細については、の公式ドキュメントを参照してください。 https://pypi.org/project/pdf2image/

画像OCR

非常に正確なOCRを備えた大手テクノロジー企業のAPIが多数あります。 PDFには通常、高密度のテキストデータが非常に多く含まれていると想定されるため、このようなOCRを実行するための最も適切な方法は、Google Vision API、特に ドキュメント_テキスト_注釈 特にそのような目的のために設計されているので機能します。 具体的には、 ドキュメント_テキスト_注釈 Googleがさまざまな言語の手書きを含む高密度テキスト用に設計したOCRエンジンにコードを送信します。

Google Vision API全体のセットアップは簡単です。公式ガイダンスを参照してください。 https://cloud.google.com/vision/docs/quickstart-client-libraries 詳細なセットアップ手順については。

その後、OCR検索に次のコードを使用できます。

def detect_document(path): """Detects document features in an image.""" from google.cloud import vision import io client = vision.ImageAnnotatorClient() with io.open(path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) for page in response.full_text_annotation.pages: for block in page.blocks: print('nBlock confidence: {}n'.format(block.confidence)) for paragraph in block.paragraphs: print('Paragraph confidence: {}'.format( paragraph.confidence)) for word in paragraph.words: word_text = ''.join([ symbol.text for symbol in word.symbols ]) print('Word text: {} (confidence: {})'.format( word_text, word.confidence)) for symbol in word.symbols: print('tSymbol: {} (confidence: {})'.format( symbol.text, symbol.confidence)) if response.error.message: raise Exception( '{}nFor more info on error messages, check: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message))

または、Google Vision APIは、JavaやGoなどの複数の言語もサポートしています。 Google APIの使用に関するその他のコードは、次の場所で取得できます。 https://cloud.google.com/vision  

アマゾンとマイクロソフトからの他のOCRサービス/ APIもあり、いつでも使用できます パイテッセラクト 特定の目的のためにモデルをトレーニングするためのライブラリ。


PDFから情報を抽出するためのOCRソリューションをお探しですか? ナノネットを与えるより高い精度、より高い柔軟性、後処理、および幅広い統合セットのためのスピン!


比較

現在、市場には多数のPDFOCRがあります。 無料で高速で、オンラインですぐに使用できるものもあれば、プロが使用するためのより正確で優れたデザインの製品を提供するものもあります。 ここでは、いくつかのオプションとその長所と短所について説明します。

オンラインPDFOCR

迅速な変換で個人的に使用するためにPDFOCRを使用する場合、正確さよりも無料で高速な方が望ましい場合があります。 これらのニーズに対応するオンラインPDFOCRサービスは多数あります。 PDF文書をアップロードするだけで、すばやく便利な方法でテキストに変換できます。

ただし、これに関する主な問題は、OCRの品質管理です。 これらのオンラインの無料OCRソフトウェアは、ほとんどの場合うまく機能しますが、定期的なメンテナンスが必要な他のオフラインソフトウェアと比較して、毎回最高品質の出力を提供する必要はありません。

オフラインソフトウェア

現在、高精度のPDFOCRサービスを提供している会社がいくつかあります。 ここでは、さまざまな側面に特化したPDF OCRのいくつかのオプションと、有望な結果を提供すると思われる最近の研究プロトタイプをいくつか見ていきます。

野生の画像などのタスクを対象とした複数のOCRサービスがあります。 現在、PDFドキュメントの読み取りのみに重点を置いているため、これらのサービスはスキップしました。

  • アビー – ABBYY FineReader PDFは、ABBYYによって開発されたOCRです。 このソフトウェアには、PDFの読み取りとテキスト変換に使用される使いやすいUIがあります。 ただし、その非エンジニアリングの性質(対象となる顧客はPDF OCRを必要とする他の分野の非技術スペシャリスト)であるため、それを他のプログラムに組み込んでさらに処理することはより困難です。
  • コファックス – ABBYYと同様に、Kofaxは購入が必要なフレンドリーなPDFリーダーです。 価格は個人使用の場合は固定で、大企業の場合は割引が適用されます。 技術的な問題が発生した場合は、24時間年中無休のサポートもご利用いただけます。
  • ディープリーダー – Deep Readerは、ACCV Conference 2019で公開された調査研究です。ドキュメントの照合、テキスト検索、画像のノイズ除去などのタスクを実行するために、複数の最先端のネットワークアーキテクチャが組み込まれています。 テーブルやキーと値のペアの抽出など、データを整理された方法で取得および保存できる追加機能があります。
  • ナノネット™ –Nanonets™PDF OCRはディープラーニングを使用するため、テンプレートとルールに完全に依存しません。 Nanonetsは特定の種類のPDFで機能するだけでなく、テキスト検索のために任意の種類のドキュメントに適用することもできます。

まとめ

結論として、この記事では、OCRの仕組みの基本と、OCR開発のタイムラインに続いて、簡単なチュートリアルとユースケースについて説明しました。 また、PDF OCRの実行可能なオプションのセットと、さらに使用するための長所と短所についても説明しました。

出典:https://nanonets.com/blog/pdf-ocr/

タイムスタンプ:

より多くの AIと機械学習