「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python 行で Google Gemini を使用してトリッキーな PDF からデータを抽出する

Python 行で Google Gemini を使用してトリッキーな PDF からデータを抽出する

2024 年 8 月 17 日に公開
ブラウズ:840

このガイドでは、Gemini Flash や GPT-4o などのビジョン言語モデル (VLM) を使用して PDF から構造化データを抽出する方法を説明します。

Google の視覚言語モデルの最新シリーズである Gemini は、テキストと画像の理解において最先端のパフォーマンスを示しました。この改善されたマルチモーダル機能と長いコンテキスト ウィンドウにより、図、チャート、表、ダイアグラムなど、従来の抽出モデルでは困難であった視覚的に複雑な PDF データの処理に特に役立ちます。

これにより、ビジュアル ファイルや Web 抽出用の独自のデータ抽出ツールを簡単に構築できます。方法は次のとおりです:

Gemini の長いコンテキスト ウィンドウとマルチモーダル機能により、従来の抽出モデルでは困難であった視覚的に複雑な PDF データの処理に特に役立ちます。

環境のセットアップ

抽出に入る前に、開発環境をセットアップしましょう。このガイドは、システムに Python がインストールされていることを前提としています。そうでない場合は、https://www.python.org/downloads/

からダウンロードしてインストールします。

⚠️ Python を使用したくない場合は、thepi.pe のクラウド プラットフォームを使用して、コードを記述せずにファイルをアップロードし、結果を CSV としてダウンロードできることに注意してください。

必要なライブラリをインストールする

ターミナルまたはコマンド プロンプトを開き、次のコマンドを実行します:

pip install git https://github.com/emcf/thepipe
pip install pandas

Python を初めて使用する人のために説明すると、pip は Python のパッケージ インストーラーであり、これらのコマンドは必要なライブラリをダウンロードしてインストールします。

API キーを設定する

パイプを使用するには、API キーが必要です。

免責事項: thepi.pe は無料のオープンソース ツールですが、API にはトークンあたり約 0.00002 ドルのコストがかかります。このようなコストを回避したい場合は、GitHub でローカル設定手順を確認してください。選択した LLM プロバイダーに引き続き料金を支払う必要があることに注意してください。

入手して設定する方法は次のとおりです:

  1. https://thepi.pe/platform/ にアクセスしてください
  2. アカウントを作成するかログインします
  3. 設定ページで API キーを見つけます

Extracting Data from Tricky PDFs with Google Gemini in lines of Python

次に、これを環境変数として設定する必要があります。プロセスはオペレーティング システムによって異なります:

  • pi.pe プラットフォームの設定メニューから API キーをコピーします

Windows の場合:

  1. スタート メニューで「環境変数」を検索
  2. 「システム環境変数の編集」をクリックします
  3. 「環境変数」ボタンをクリックします
  4. [ユーザー変数] で [新規] をクリックします
  5. 変数名をTHEPIPE_API_KEY、値をAPIキーとして設定します
  6. 「OK」をクリックして保存します

macOS および Linux の場合:
ターミナルを開き、シェル設定ファイル (例: ~/.bashrc または ~/.zshrc) に次の行を追加します:

export THEPIPE_API_KEY=your_api_key_here

次に、設定をリロードします:

source ~/.bashrc # or ~/.zshrc

抽出スキーマの定義

抽出を成功させる鍵は、抽出するデータの明確なスキーマを定義することです。数量明細書ドキュメントからデータを抽出するとします:

Extracting Data from Tricky PDFs with Google Gemini in lines of Python

数量明細書ドキュメントのページの例。各ページのデータは他のページから独立しているため、抽出は「ページごと」に行われます。ページごとに抽出するデータが複数あるため、複数の抽出を True

に設定します。

列名を確認すると、次のようなスキーマを抽出できます:

schema = {
  "item": "string",
  "unit": "string",
  "quantity": "int",
}

pi.pe プラットフォームでお好みに合わせてスキーマを変更できます。 [スキーマの表示] をクリックすると、Python API

で使用するためにコピーして貼り付けることができるスキーマが表示されます。

Image description

PDF からのデータの抽出

次に、extract_from_file を使用して PDF からデータを取得しましょう:

from thepipe.extract import extract_from_file
results = extract_from_file(
  file_path = "bill_of_quantity.pdf",
  schema = schema,
  ai_model = "google/gemini-flash-1.5b",
  chunking_method = "chunk_by_page"
)

ここでは、各ページを AI モデルに個別に送信したいため、chunking_method="chunk_by_page" としています (PDF は大きすぎて一度にすべてを送信できません)。 PDF ページにはそれぞれ複数行のデータが含まれるため、multiple_extractions=True も設定します。 PDF のページは次のようになります:

Image description

pi.pe プラットフォームで表示された数量明細書 PDF の抽出結果

結果の処理

抽出結果は辞書のリストとして返されます。これらの結果を処理して pandas DataFrame:
を作成できます。

import pandas as pd
df = pd.DataFrame(results)
# Display the first few rows of the DataFrame
print(df.head())

これにより、テキスト コンテンツや図や表などの視覚要素の説明など、抽出されたすべての情報を含む DataFrame が作成されます。

さまざまな形式へのエクスポート

データを DataFrame に保存したので、それをさまざまな形式に簡単にエクスポートできます。以下にいくつかのオプションがあります:

Excel へのエクスポート

df.to_excel("extracted_research_data.xlsx", index=False, sheet_name="Research Data")

これにより、「Research Data」という名前のシートを含む「extracted_research_data.xlsx」という名前の Excel ファイルが作成されます。 Index=False パラメーターにより、DataFrame インデックスが別の列として含まれることがなくなります。

CSVにエクスポートする

より単純な形式を希望する場合は、CSV にエクスポートできます:

df.to_csv("extracted_research_data.csv", index=False)

これにより、Excel または任意のテキスト エディタで開くことができる CSV ファイルが作成されます。

エンディングノート

抽出を成功させる鍵は、明確なスキーマを定義し、AI モデルのマルチモーダル機能を活用することにあります。これらの手法に慣れてくると、カスタム チャンク方法、カスタム抽出プロンプト、抽出プロセスを大規模なデータ パイプラインに統合するなど、より高度な機能を探索できるようになります。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/emcf/extracting-data-from-tricky-pdfs-with-google-gemini-in-10-lines-of-python-7ni?1 侵害がある場合、study_golang @163.comdelete までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3