在本指南中,我將向您展示如何使用 Gemini Flash 或 GPT-4o 等視覺語言模型 (VLM) 從 PDF 中提取結構化資料。
Gemini 是 Google 最新的視覺語言模型系列,在文字和圖像理解方面表現出了最先進的性能。這種改進的多模式功能和長上下文視窗使其特別適用於處理傳統提取模型難以處理的視覺上複雜的 PDF 數據,例如圖形、圖表、表格和圖表。
透過這樣做,您可以輕鬆建立自己的資料擷取工具,用於視覺化文件和網頁擷取。方法如下:
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 金鑰。
免責聲明:雖然 thepi.pe 是一個免費的開源工具,但 API 是有成本的,每個代幣大約為 0.00002 美元。如果您想避免此類成本,請查看 GitHub 上的本機設定說明。請注意,您仍然需要向您選擇的 LLM 提供者付款。
取得與設定方法如下:
現在,您需要將其設定為環境變數。該過程因您的作業系統而異:
對於 Windows:
對於 macOS 和 Linux:
開啟終端並將此行新增至 shell 設定檔(例如 ~/.bashrc 或 ~/.zshrc):
export THEPIPE_API_KEY=your_api_key_here
然後,重新載入您的設定:
source ~/.bashrc # or ~/.zshrc
成功提取的關鍵是為要提取的資料定義清晰的架構。假設我們正在從工程量清單文件中提取資料:
工程量清單文件中的頁面範例。每個頁面上的資料獨立於其他頁面,因此我們「每頁」進行提取。每頁要提取多條數據,所以我們將多次提取設定為True
查看列名,我們可能想要擷取以下模式:
schema = { "item": "string", "unit": "string", "quantity": "int", }
您可以在 pi.pe 平台上依照自己的喜好修改架構。點擊「檢視架構」將為您提供一個架構,您可以複製並貼上以與 Python API 一起使用
現在,讓我們使用 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" )
在這裡,我們設定了 chunking_method="chunk_by_page" ,因為我們想將每個頁面單獨傳送到 AI 模型(PDF 太大,無法一次全部傳輸)。我們也設定 multiple_extractions=True 因為每個 PDF 頁面都包含多行資料。 PDF 頁面如下圖所示:
在 thepi.pe 平台上查看的工程量清單 PDF 的擷取結果
The extraction results are returned as a list of dictionaries. We can process these results to create a pandas DataFrame:
import pandas as pd df = pd.DataFrame(results) # Display the first few rows of the DataFrame print(df.head())
This creates a DataFrame with all the extracted information, including textual content and descriptions of visual elements like figures and tables.
Now that we have our data in a DataFrame, we can easily export it to various formats. Here are some options:
df.to_excel("extracted_research_data.xlsx", index=False, sheet_name="Research Data")
This creates an Excel file named "extracted_research_data.xlsx" with a sheet named "Research Data". The index=False parameter prevents the DataFrame index from being included as a separate column.
If you prefer a simpler format, you can export to CSV:
df.to_csv("extracted_research_data.csv", index=False)
This creates a CSV file that can be opened in Excel or any text editor.
The key to successful extraction lies in defining a clear schema and utilizing the AI model's multimodal capabilities. As you become more comfortable with these techniques, you can explore more advanced features like custom chunking methods, custom extraction prompts, and integrating the extraction process into larger data pipelines.
以上是使用 Google Gemini 在 Python 行中從棘手的 PDF 中提取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!