PDF データをデータベース エントリに変換する PlatoBlockchain Data Intelligence。 垂直検索。 あい。

PDF データをデータベース エントリに変換する

いくつかの組織や企業は、請求書、給与明細、財務、作業指示書、領収書などの重要なドキュメントを共有するためにPDFドキュメントに依存しています。 ただし、PDFはワークフローに簡単にエクスポートおよび整理できないため、履歴データを保存するための頼りになる形式ではありません。 そのため、人々は情報抽出アルゴリズムを使用して、PDFやスキャンしたドキュメントをJSON、CSV、テーブル、Excelなどの構造化された形式にデジタル化し、他の組織のワークフローに簡単に変換できます。

場合によっては、PDFには、さまざまなERP、CMS、およびその他のデータベース駆動型システムで処理される重要な情報が含まれています。 残念ながら、PDFドキュメントには簡単なPDFからデータベースへの機能がなく、スクリプトの作成やこのタスクに関するワークフローの構築は少し複雑です。 ここで、OCRおよびディープラーニング(DL)アルゴリズムが登場し、これらのPDF形式からデータを抽出してデータベースにエクスポートします。 このブログ投稿では、DLテクノロジーと市場で人気のあるAPIを使用して、これを実現するためのさまざまな方法を紹介します。

PDFからデータベースへの変換とは?

PDFからデータベースへの変換は、PDFからPostgres、Mongo、MySQLなどのデータベースにデータをエクスポートするタスクです。

さまざまなソースからの請求書情報を保持および維持するWebアプリケーションまたはERPシステムを構築するとします。 過去の請求書をデータベースに手動で追加することは困難な作業であり、エラーが発生しやすくなります。 一方、単純なOCRを使用すると、請求書からテーブルを正確に抽出できない場合があります。

ここで、高度なAI駆動のPDFからデータベースへの変換が役立ちます。

このAI主導のPDFからデータベースへの変換プロセスを自動化できますか? - はい。

以下のセクションでは、コンピュータービジョンとディープラーニングを使用して、スキャンされたドキュメントからテーブル領域を検出します。 これらのテーブルは、CSVやExcelなどの特定のデータ形式でさらに保存され、データベースに直接プッシュされます。

これらについて説明する前に、PDFからデータベースへの検出が役立ついくつかのユースケースを理解しましょう。

PDFからデータベースへのさまざまなユースケース

データベースは、クラウドとローカルストレージの両方に情報を保存するための最良の方法です。 簡単なクエリを使用して、さまざまな操作や操作を実行できます。 自動化されたPDFからデータベースへの変換ワークフローで大幅に最適化できるいくつかのユースケースを次に示します。

  1. Webでの請求書管理: 企業や組織は毎日複数の請求書を処理します。 また、各請求書を手動で処理することは困難です。 また、場合によっては、非デジタル形式の請求書を発行および受信するため、追跡が困難になります。 したがって、すべての請求書を8か所に保存できるWebベースのアプリケーションに依存しています。 PDFからデータベースへのコンバーターは、請求書からWebアプリケーションへのデータ抽出を自動化できます。 これらのタスクを効率的に自動化するために、cronジョブを実行し、nXNUMXnやZapierなどのサードパーティサービスと統合できます。新しい請求書がスキャンされてアップロードされると、アルゴリズムが実行され、自動的にテーブルにプッシュされます。
  2. ECom在庫管理者t:多くのe-com在庫管理は、PDFおよびスキャンされたコピーから製品を手動で入力することで実行されます。 ただし、すべての製品と売上を追跡するには、すべてのデータを課金管理ソフトウェアにアップロードする必要があります。 したがって、テーブルからデータベースへの変換アルゴリズムを使用すると、手動入力を自動化し、リソースを節約できます。 このプロセスでは通常、スキャンしたドキュメントからインベントリリストをスキャンし、さまざまなビジネスルールと条件に基づいて特定のデータベーステーブルにエクスポートします。
  3. 調査からのデータ抽出:フィードバックやその他の貴重な情報を収集するために、通常は調査を実施します。 これらは、企業やメディアから政府や学者に至るまで、情報経済に携わるほぼすべての人に重要なデータと洞察のソースを提供します。 これらをオンラインで収集すると、ユーザーの応答に基づいてテーブルデータのステータスを簡単に抽出し、データベースにアップロードできます。 ただし、ほとんどの場合、調査の回答は紙に書かれています。 このような場合、手動で情報を収集してデジタル形式で保存することは非常に困難です。 したがって、データベースアルゴリズムへのテーブルに依存することで、時間を節約し、追加コストを削減できます。

PDF からリレーショナルおよび非リレーショナル データベースに情報を抽出する方法

PDFファイルは、電子的に生成されたものと電子的に生成されていないもののXNUMXつの異なるタイプと見なされます。

  1. 電子PDF:このスキャンされたPDFドキュメントには、画像の背後に隠されたテキストが含まれている可能性があります。 これらは、電子的に生成されたPDFとも呼ばれます。
  2. 非電子PDF:このタイプでは、画像としてハードコードされたコンテンツが多く表示されます。 これは、ハードコピードキュメントをスキャンしてPDFファイルにする場合です。

最初のタイプ(電子的に生成されたもの)には、PythonやJavaなどの単純なプログラミング言語とフレームワークを使用できます。 電子的に生成されていないPDFの場合、OCRとディープラーニングを備えたコンピュータービジョン技術を利用する必要があります。 ただし、これらのアルゴリズムはすべてのテーブル抽出アルゴリズムで同じではない可能性があり、より高い精度を実現するには、データのタイプに応じて変更する必要があります。 NLP(Natural Language Processing)は、テーブル内のデータを理解し、場合によってはそれらを抽出するためにも使用されます。

一方、データベースにはXNUMX種類(リレーショナルと非リレーショナル)があります。 これらの各データベースには、アーキテクチャに基づいて異なるルールのセットがあります。 リレーショナルデータベースは構造化されています。つまり、データはテーブルに編成されています。 いくつかの例には、MySQL、Postgresなどが含まれます。

対照的に、非リレーショナルデータベースはドキュメント指向であり、すべての情報がより多くの洗濯物リストの順序で保存されることを意味します。 単一のコンストラクタードキュメント内に、MongoDBなどのすべてのデータが一覧表示されます。

ドキュメントが電子的に生成される場合のデータベースへのPDF

説明したように、電子的に生成されたPDFの場合、テーブルを抽出するプロセスは簡単です。 アイデアは、テーブルを抽出し、簡単なスクリプトを使用してそれらを変換したり、テーブルに追加したりすることです。 PDFからのテーブル抽出には、主にXNUMXつの手法があります。

テクニック#1ストリーム: アルゴリズムは、セル間の空白に基づいてテーブルを解析し、テーブル構造をシミュレートして、テキストが存在しない場所を特定します。 これは、ページ上の文字を余白を使用して単語と文にグループ化するPDFMinerの機能に基づいて構築されています。 この手法では、最初に、テキストのy軸の位置(つまり、高さ)に基づいて大まかな推測を行うことによって行が検出されます。 同じ行のすべてのテキストは、同じ行の一部と見なされます。 次に、リーダーがグループ化され、別のグループとしてまとめられて、テーブルの列が識別されます。 最後に、前の手順で検出された行と列に基づいて、テーブルが一緒に設定されます。

テクニック#2ラティス: ストリームとは対照的に、ラティスはより決定論的です。 つまり、推測に依存しません。 最初に、セル間に線が定義されているテーブルを解析します。 次に、ページに存在する複数のテーブルを自動的に解析できます。 この手法は基本的に、ポリゴンの形状を確認し、テーブルセル内のテキストを識別することで機能します。 PDFにポリゴンを識別できる機能がある場合、これは簡単です。 もしそうなら、それはおそらくその中身を読む方法を持っているでしょう。 ただし、そうではありません。 したがって、コンピュータビジョンは、これらの形状を識別し、テーブルの内容を抽出するために広く利用されています。

抽出されたテーブルは、主にデータフレーム形式で保存されます。 これは、最も人気のあるPythonライブラリパンダのXNUMXつによって提供されるネイティブデータ型のXNUMXつです。 テーブルデータをデータフレームに格納することにはいくつかの利点があります。 これらは、JSON、CSV、テーブルなどのさまざまな形式で簡単に処理、操作、およびエクスポートできます。 ただし、これらのデータフレームをテーブルにプッシュする前に、まずDB-Clientデータベースに接続してから、テーブルを移行する必要があります。 Pythonなどの言語を使用すると、これらのデータソースに接続してデータをエクスポートできるライブラリをいくつか見つけることができます。

ドキュメントが電子的に生成されていない場合のデータベースへのPDF

ここでのデータは別のソースを介して手動でスキャンされるため、上記の手法は、電子的に生成されていないPDFでは機能しない可能性があります。 これが、スキャンされたドキュメントからデータを抽出してデータベースにエクスポートするために、OCRとディープラーニングの手法を使用する理由です。

要するに、光学式文字認識、OCRは、スキャンされたドキュメントから印刷された文字を編集可能なテキストに変換する特別なツールです。 ドキュメントからPDFテーブルを識別するには、まずテーブルの位置を識別し、次にOCRを適用してテーブルセルからデータを抽出する必要があります。 それがどのように達成されるかについてのステップは以下の通りです:

  1. まず、水平および垂直の輪郭を適用して線分を検出します。
  2. 線間の線の交点は、すべての線のピクセルの強度を調べることによって検出されます。 ラインピクセルの強度がピクセルの残りの部分よりも大きい場合、それはXNUMXつのラインの一部であるため、交差します。
  3. テーブルのエッジは、交差する線のピクセルの強度を調べることによって決定されます。 ここでは、線のすべてのピクセルが取得され、最も外側の線がテーブルの境界を表します。
  4. 画像解析はPDF座標に変換され、そこでセルが決定されます。 テキストは、x座標とy座標に基づいてセルに割り当てられます。
  5. OCRは、テキストを抽出するために座標に適用されます
  6. 抽出されたテキストは、テーブルの位置に基づいてデータフレームにエクスポートされます。

これが、CVを使用してテーブルを抽出する方法です。 ただし、ここにはいくつかの欠点があります。 これらのアルゴリズムは、大きなテーブルや異なるテンプレートスタイルのテーブルでは失敗します。 ここでディープラーニングが登場します。 彼らは特別な種類のニューラルネットワークフレームワークを使用してデータから学習し、学習に基づいて同様のパターンを識別します。 過去XNUMX年間で、特に情報抽出などのタスクで最先端のパフォーマンスを達成してきました。 それでは、ディープニューラルネットワークがデータから学習し、任意のドキュメントからテーブルを抽出する方法を見てみましょう。

ディープニューラルネットワークのトレーニングには、特定のワークフローが含まれます。 これらのワークフローは、多くの場合、使用しているデータのタイプとモデルのパフォーマンスに基づいて変更されます。 ワークフローの最初のフェーズでは、データを収集し、モデルに基づいて処理します。 PDFドキュメントからテーブルを抽出する場合、データセットには非構造化ドキュメントが含まれているのが理想的です。 これらのドキュメントは画像に変換され、テンソルとして読み込まれ、トレーニング用のデータローダークラスとして準備されます。 次に、通常、トレーニングに必要なすべてのハイパーパラメータを定義します。 これらには通常、モデルのバッチサイズ、損失関数、オプティマイザーの設定が含まれます。 最後に、ニューラルネットワークアーキテクチャは、事前定義されたモデルの上に定義または構築されます。 このモデルは、データに基づいてトレーニングされ、パフォーマンスメトリックに基づいて微調整されます。

以下は、深層学習モデルのトレーニングに関連するさまざまな手順のスクリーンショットです。

典型的なMLワークフロー(ソース)

PDFからデータを抽出し、Pythonを使用してSQLデータベースにエクスポートします

これまで、PDFからデータベースへの変換とは何かを学び、それが役立つ可能性のあるいくつかのユースケースについて説明してきました。 このセクションでは、コンピュータービジョンを使用してこの問題に実際に取り組み、スキャンしたpdfのテーブルを検出して、データベースにエクスポートします。 フォローするには、PythonとOpenCVをローカルマシンにインストールしてください。 または、オンラインのGoogleCollabノートブックを使用することもできます。

ステップ1:TabulaとPandasをインストールする

この例では、TabulaとPandasを使用して、テーブルを抽出してデータベースにプッシュします。 それらをpip経由でインストールし、プログラムにインポートしてみましょう。

import tabula
import pandas as pd

ステップ2:テーブルをデータフレームに読み込む

今、私たちは使用します read_pdf 表からPDFから表を読み取る機能。 このライブラリは、電子的に生成されたPDFドキュメントでのみ機能することに注意してください。 コードスニペットは次のとおりです。

table = tabula.read_pdf("sample.pdf",pages='all',multiple_tables=False)

df = pd.concat(table)

ここでは、ご覧のとおり、最初にPDFファイルの内容を読み取るために使用し、パラメータを設定します multiple_tables 例で使用されているドキュメントにはテーブルがXNUMXつしかないため、Falseに変更します。

ここで、パンダを使用してこのリストをデータフレームにロードします。また、typeメソッドを使用してテーブルのタイプを確認できます。 これにより、ネイティブのパンダデータフレームが返されます。

ステップ3:データフレームをPostresに移行する

テーブルをデータベースにプッシュする前に、まず、プログラムからテーブルへの接続を確立する必要があります。これは、 sqlalchemy Pythonのクライアント。 同様に、さまざまなプログラミング言語により、この種のデータベースクライアントは、プログラムから直接データベースと対話できます。

このプログラムでは、 create_engine データベースに接続できるようにする方法。 これを機能させるには、指定された文字列のデータベースクレデンシャルを必ず置き換えてください。 次に、 write_frame 抽出されたテーブルを接続されたデータベースにエクスポートする関数。

engine = create_engine('postgresql+psycopg2://username:password@host:port/database')

sql.write_frame(df, 'table_name', con, flavor='postgresql')

そして、ちょうどそのように、PDFからデータベースにテーブルをエクスポートすることができました。これは、単純に処理された電子的に生成されたPDFを使用したため、非常に単純で簡単に見えます。 電子的に生成されていないテーブルからテーブルを抽出する場合、次のような一般的なディープラーニング手法を利用できます。

  1. コード付きの論文– GFTE:グラフベースの財務表の抽出
  2. コード付きの論文– PubTables-1M:テーブル抽出モデルのトレーニングと評価のためのユニバーサルデータセットとメトリックに向けて
  3. TableNet:エンドツーエンドのテーブル検出とスキャンしたドキュメント画像からの表形式データ抽出のためのディープラーニングモデル

Nanonetsを入力してください:PDFテーブルからデータベースへの変換のための高度なOCR

このセクションでは、Nanonetがデータベースに対してよりカスタマイズ可能で簡単な方法でテーブルを実行するのにどのように役立つかを見ていきます。

Nanonets™はクラウドベースのOCRであり、AIを使用した手動データ入力の自動化に役立ちます。 データに基づいてOCRモデルを構築/トレーニングし、JSON/CSVまたは任意の形式で転送できるダッシュボードがあります。 NanonetをPDFドキュメントスキャナーとして使用する利点のいくつかを次に示します。

NanonetsのハイライトのXNUMXつは、サービスがもたらすシンプルさです。 プログラミングのバックグラウンドがなくてもこれらのサービスを選択でき、最先端のテクノロジーを使用してPDFデータを簡単に抽出できます。 以下は、PDFをデータベースに変換するのがいかに簡単かについての簡単な概要です。

ステップ1: nanonets.comにアクセスし、登録/ログインします。

PDF データをデータベース エントリに変換する PlatoBlockchain Data Intelligence。 垂直検索。 あい。

ステップ2: 登録後、「開始するために選択」領域に移動します。ここでは、事前に構築されたエクストラクタを使用するか、データセットを使用して独自にエクストラクタを作成できます。 ここでは、請求書の事前作成された請求書抽出機能を使用します。

PDF データをデータベース エントリに変換する PlatoBlockchain Data Intelligence。 垂直検索。 あい。

ステップ3: 画像のPDFをアップロードして、データ抽出を実行し、自動抽出オプションを選択します。

PDF データをデータベース エントリに変換する PlatoBlockchain Data Intelligence。 垂直検索。 あい。

ステップ 4:新しい統合MySQL統合を作成して、抽出されたデータをデータベースにエクスポートします。 または、選択したデータベースに基づいてさまざまなオプションを選択できます。

PDF データをデータベース エントリに変換する PlatoBlockchain Data Intelligence。 垂直検索。 あい。

データ接続を確立し、[統合の追加]をクリックします。 これにより、ファイルがアップロードされるたびにデータが抽出され、データベースに自動的にアップロードされます。 必要な統合が見つからない場合は、いつでもNanonets APIを使用して、自動化を実行するための簡単なスクリプトを作成できます。

タイムスタンプ:

より多くの AIと機械学習