paint-brush
PDF データ抽出に GPT-4 を使用する方法: 包括的なガイド@docsumo
26,299 測定値
26,299 測定値

PDF データ抽出に GPT-4 を使用する方法: 包括的なガイド

Docsumo6m2023/05/30
Read on Terminal Reader

長すぎる; 読むには

PDF 抽出は、PDF ファイルからテキスト、画像、またはその他のデータを抽出するプロセスです。この記事では、PDF データ抽出の現在の方法とその制限、および GPT-4 を使用して PDF 抽出の質問応答タスクを実行する方法について説明します。 PDFData 抽出用に G PT-4 を実装するためのステップバイステップ ガイドも提供します。
featured image - PDF データ抽出に GPT-4 を使用する方法: 包括的なガイド
Docsumo HackerNoon profile picture
0-item
1-item

PDF 抽出は、PDF ファイルからテキスト、画像、またはその他のデータを抽出するプロセスです。この記事では、PDF データ抽出の現在の方法とその制限、および GPT-4 を使用して PDF 抽出の質問応答タスクを実行する方法について説明します。また、PDF データ抽出用に GPT-4 を実装するためのステップバイステップ ガイドも提供します。


この記事では、次のことについて説明します。

  • PDF データ抽出の現在の方法とその制限は何ですか?
  • GPT-4 を使用して一連の PDF ファイルをクエリし、質問に対する答えを見つける方法。具体的には、PDF 抽出のプロセスと、それを GPT-4 と組み合わせて質問応答タスクを実行する方法を検討します。


それでは、早速本題に入りましょう。


PDF抽出とは何ですか?

PDF データ抽出は、PDF (Portable Document Format) ファイルからテキスト、画像、またはその他のデータを抽出するプロセスです。これらのファイルはドキュメントの共有と保存に広く使用されていますが、そのコンテンツには常に簡単にアクセスできるわけではありません。


PDF 抽出が重要なのはなぜですか?

PDF ファイルのアクセシビリティと読みやすさは、視覚に問題がある人や、小さなテキストやぼやけたテキストを読むのが難しい人にとって非常に必要であり、法的状況、データ分析、研究に役立ちます。抽出が必要な例としては、時間を節約し間違いを避けるために、PDF ファイルのテキストまたは画像コンテンツを他のドキュメントで使用することが含まれます。


PDF データ抽出の現在の方法とその制限は何ですか?

2023 年現在、インターネット上には PDF 抽出テクニックやツールがたくさんあります。データ抽出の 3 つの一般的な手法とその例をさらに詳しく見てみましょう。


1 : OCR技術

OCR ( Optical Character Recognitionの略語) は、スキャンした文書、画像、PDF ファイルなどのさまざまなソースからテキストを抽出するために使用でき、書籍、新聞、歴史的文書などの印刷文書をデジタル化するために一般的に使用されます。

一般的な OCR ツールには次のようなものがあります。


  • PyTesseract モジュール[ Github ]
  • EasyOCR モジュール[ Github ]
  • PaddlePaddle OCR [ Github ]


2 : テンプレート

テンプレートベースの技術では、ドキュメント PDF のスタイルが考慮され、ハードコーディングされたルールが使用されます。これらの手法は一般に、構造が一定のままで理解しやすい構造化文書に対して機能します。


人気のあるテンプレートベースの手法には次のようなものがあります。

  • 正規表現パターンの使用

    例: 日付は次の正規表現ルールで抽出できます。

    [dd-mm-yyyy または yyyy-mm-dd] - [0-9]{2,4}/[0-9]{2}/[0-9]{2,4}

  • テキストの位置とドキュメントの寸法に基づいたハードコーディング ルール


3 : 機械学習手法

機械学習 (ML) 技術は、ファイル構造に関係なく、PDF ファイルから高精度のテキスト認識と抽出を可能にするため、PDF 抽出に最適な方法の 1 つと考えられています。これらのモデルは、隣接するテキストも考慮して、 position of the text layoutと位置の両方の情報を保存できます。これにより、一般化が向上し、文書構造をより効率的に学習できるようになります。


LLM とは

大規模言語モデルは、膨大な量のテキスト データでトレーニングされた人工知能のサブセットです。例: ChatGPT は、対話やその他の自然言語入力に対して人間のような応答を生成するために、インターネット データと情報全体でトレーニングされます。

これらの自然言語応答を生成するために、LLM は深層学習モデルを利用します。このモデルは、多層ニューラル ネットワークを使用して複雑なデータを処理、分析、予測します。


一般的な ML モデルには次のようなものがあります。

  • レイアウト LM v1、v2、v3 モデル[ Github ]
  • DocBERT [ Github ]


ML モデルの制限

このタイプのモデルが直面する大きな問題の 1 つは、抽出が実際に正確で正しいかどうかを知らずに、PDF から情報を抽出できることです。抽出されたテキストには、別のキー内の他のキー情報も含まれる場合があります。インテリジェントなコンテキストを持つことは、モデルがそれらの不正確さを軽減するのに役立ちます。


この問題を解決し、PDF 抽出システムにインテリジェンスを統合するために、GPT-4 の力を活用できます。


GPT-4 と ChatGPT とは何ですか?

GPT-4 (Generative Pre-trained Transformer 4) は、OpenAI によって開発された大規模な言語モデルで、深層学習技術を使用して人間のような自然言語テキストを生成します。これは、利用可能な言語モデルの中で最大かつ最も強力な言語モデルの 1 つであり、1,750 億個のパラメーターがあります。

一方、Chat-GPT は、会話型 AI アプリケーション用に特別にトレーニングされた GPT の亜種です。会話データの大規模なデータセットに基づいて微調整されており、ユーザーのクエリに対して人間のような応答を生成できます。 Chat GPT は、チャットボット、カスタマー サービス、仮想アシスタントなどのさまざまなアプリケーションに使用できます。


問題の説明を進めて、GPT-4 と ChatGPT が PDF 抽出の問題の解決にどのように役立つかを見てみましょう。


問題文

PDF のコレクションから特定の情報を効率的に抽出するという課題は、多くのアプリケーションや業界が定期的に遭遇する課題です。銀行取引明細書や納税フォームから情報を抽出するのは困難です。多数の PDF を手動でスキャンする昔ながらの方法では時間がかかり、不正確なデータや一貫性のないデータが生成される可能性があります。さらに、PDF に含まれる非構造化データにより、自動システムが必要な情報を抽出することが困難になります。


私たちは、ユーザーの質問に対する回答を PDF からほとんど手作業で見つけることなく解決することを目指しています。


解決

GPT-4 とその埋め込みを有利に使用できます。


  1. ドキュメントの埋め込みとユーザー クエリの埋め込みを生成します。
  2. ユーザーのクエリに最も近く、類似性手法 (コサイン スコアなど) を使用して回答が含まれている可能性があるドキュメントを特定し、次の操作を行います。
  3. ドキュメントとユーザーのクエリを GPT-4 にフィードして、正確な答えを見つけます。

実装


ステップ 1 : PDF を解析する

A: PDF からテキストを抽出します

OCR または ML 技術のいずれかを使用して、ドキュメントからテキストを抽出できます。


B: 文書の構造に基づいてテキストを適切な小さなチャンクに分割する

Bounding-Box [x0, y0, x2, y2] (x0 と y0 は左上の座標、x2 と y2 は右下の座標) の座標情報を使用して、テキスト全体を特定の幅の小さな塊に分割できます。そして高さ。


C: それらのチャンクを Embedding にエンコードします[ OpenAI EmbeddingsまたはHuggingFaceを使用します]


 import torch from transformers import AutoTokenizer, AutoModel # Load the pre-trained model and tokenizer tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') model = AutoModel.from_pretrained('bert-base-uncased') # Tokenize the sentence tokens = tokenizer.encode("<pass your code chunk block here>", return_tensors='pt') # Get the embeddings with torch.no_grad(): outputs = model(tokens) embeddings = outputs[0][0] # Print the embeddings print(embeddings)


ステップ 2: ベクター エンベディングをベクター データベースに保存する

Vector DB とは何ですか? なぜ必要ですか?

  • ベクトル データベースは、ベクトル埋め込みの固有の構造を処理するために専用に構築された DB です。これらは、値を比較し、互いに最も類似しているものを見つけることによって、簡単に検索および取得できるようにベクトルにインデックスを付けます。例としては、松ぼっくりやウィアビエイトなどが挙げられます。
  • この V-DB には、各チャンク スニペットとドキュメント自体のベクトルが含まれています


ステップ 3 : 入力クエリに関連するチャンク スニペットを検索する

A: ユーザーのクエリの埋め込みを計算します

埋め込みを計算するには、上記と同じ手法を使用します。


B: エンベディングがユーザー クエリのエンベディングと密接に一致するチャンクエンベディング ベクトルをベクトル データベースから検索します。

similarity search algorithmのいずれかを使用できます。

Sentence Transformer ライブラリの Semantic Sentence Samerity を使用できます。

 from sentence_transformers import SentenceTransformer, util #Compute cosine-similarities for each code chunk embds with user's query embeddings cosine_scores = util.cos_sim(code_chunk_embds, user_query_embds)


ステップ 4 : 提供されたチャンク スニペットとユーザーのクエリに基づいて GPT-4 に回答を求める

A: 3 つの入力を提供します。

入力1 :ユーザークエリ

Input2 :クエリによく似たチャンク

入力 3 :メタ指示 (ある場合) [システム : ドキュメントで提供される情報のみに基づいて質問に回答します]


B: GPT-4 出力が答えです


GPT4 および ChatGPT API を使用する利点は何ですか?

すでにご存知のとおり、GPT4 はトークン長 8,192 および 32,768 の大量のコンテキストを組み込むことができる非常に強力な LLM であるため、非常に正確な結果を生成することが簡単かつ高速になります。


ChatGPT API は任意のプログラミング言語とシームレスに統合されており、ダウンストリーム タスクでさらに役立ちます。


私たちは何を学んだのでしょうか?

  • さまざまな PDF およびデータ抽出技術とツールについて学びました
  • この種のモジュールとモデルの制限は何ですか
  • ChatGPT と GPT-4 は私たちのユースケースにおいて何をどのように役立つのか、また PDF からのデータ抽出を解決するためにそれらをどのように使用できるのか