」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Google Gemini 在 Python 行中從棘手的 PDF 中提取數據

使用 Google Gemini 在 Python 行中從棘手的 PDF 中提取數據

發佈於2024-08-17
瀏覽:111

在本指南中,我將向您展示如何使用 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 金鑰

要使用管道,您需要 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. 點選「確定」儲存

對於 macOS 和 Linux:
開啟終端並將此行新增至 shell 設定檔(例如 ~/.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"
)

在這裡,我們有 chunking_method="chunk_by_page" 因為我們想將每個頁面單獨發送到 AI 模型(PDF 太大,無法一次全部發送)。我們也設定 multiple_extractions=True 因為每個 PDF 頁面都包含多行資料。 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")

這將建立一個名為「extracted_research_data.xlsx」的 Excel 文件,其中包含一個名為「Research Data」的工作表。 index=False 參數可防止 DataFrame 索引作為單獨的欄位包含在內。

匯出為 CSV

如果您喜歡更簡單的格式,可以匯出為 CSV:

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

這將建立一個可以在 Excel 或任何文字編輯器中開啟的 CSV 檔案。

結束語

成功提取的關鍵在於定義清晰的模式並利用人工智慧模型的多模式功能。隨著您對這些技術越來越熟悉,您可以探索更高級的功能,例如自訂分塊方法、自訂提取提示以及將提取過程整合到更大的資料管道中。

版本聲明 本文轉載於:https://dev.to/emcf/extracting-data-from-tricky-pdfs-with-google-gemini-in-10-lines-of-python-7ni?1如有侵犯,請聯絡study_golang @163.com刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3