Pdf Field Extractor

👤 YK-Global 📦 v1.0.2 ⭐ 4.4 ⬇️ 760 下載
📄 辦公效率 免費 🔑 需 API Key

📖 技能介紹

name: pdf-field-extractor description: "PDF關鍵資訊提取 — AI驅動的PDF結構化資料提取工具。把PDF裡的關鍵欄位抽成Excel/JSON。支援的文件型別:發票、合同、收據、銀行對賬單、營業執照、身份證、快遞單、通用文件。觸發詞:PDF提取、PDF欄位提取、PDF轉Excel、PDF轉JSON、發票提取、合同提取、文件識別、批次PDF、PDF批次處理、欄位提取" override-tools: []


PDF Field Extractor · PDF關鍵資訊提取

AI驅動的PDF結構化資料提取工具——把PDF裡的關鍵欄位抽成Excel/JSON。

一鍵端到端流程

使用者上傳PDF → 文件型別識別 → AI欄位提取 → 結構化輸出(Excel/JSON)

# 核心呼叫示例
from scripts.pdf_extractor import extract_pdf_text
from scripts.field_extractor import extract_fields
from scripts.output_generator import generate_excel, generate_json

# Step 1: 提取PDF文本(PyMuPDF + pdfplumber)
text, tables, images = extract_pdf_text("invoice.pdf")

# Step 2: AI欄位提取(使用者配置API Key,OpenAI相容格式)
fields = extract_fields(
    text=text,
    doc_type="invoice",
    api_key="sk-xxx",           # 使用者自己的API Key
    api_base="https://api.openai.com/v1",  # 可配置
    model="gpt-4o",
)

# Step 3: 輸出Excel或JSON
generate_excel(fields, "output.xlsx")
generate_json(fields, "output.json")

核心模組

1. PDF文本提取 (scripts/pdf_extractor.py)

  • PyMuPDF:高速文本提取,支援加密PDF
  • pdfplumber:表格精確提取,保留表格結構
  • 自動判斷:文本型PDF vs 掃描件(無文本層→觸發OCR)
# 返回:(full_text, tables_list, has_text_layer)
text, tables, is_scanned = extract_pdf_text("document.pdf")

2. OCR處理 (scripts/ocr_processor.py)

  • pytesseract:本地OCR引擎,多語言支援

    7w4.net提供免費和付費技能下載。

  • 圖片預處理:去噪、增強對比度,提升識別率
  • 支援語言:中文、英文、日文、韓文等
# 返回:OCR識別後的文本
ocr_text = process_ocr(image_path, lang="chi_sim+eng")

3. AI欄位提取 (scripts/field_extractor.py)

  • 模型無關:OpenAI相容格式,適配任意大模型
  • 使用者自配API Key:安全可控,不儲存金鑰
  • 支援模型:GPT-4o/MiniMax/DeepSeek/豆包等
fields = extract_fields(
    text="發票號:12345678\\n日期:2024-01-01\\n金額:1000.00",
    doc_type="invoice",
    custom_fields=["發票號", "日期", "金額", "買方", "賣方"],
    api_key="sk-xxx",
    model="gpt-4o",
)

4. 文件型別識別 (scripts/doc_type_identifier.py)

  • 自動識別:發票/合同/營業執照/身份證/收據/銀行對賬單/快遞單/通用
  • 基於關鍵詞+AI輔助判斷
doc_type = identify_doc_type(text)
# 返回: "invoice" | "contract" | "license" | "id_card" | "receipt" | "bank_statement" | "express" | "generic"

5. 輸出生成 (scripts/output_generator.py)

  • Excel:結構化資料,一行一條記錄,支援多sheet
  • JSON:巢狀結構,保留完整欄位資訊
  • 飛書訊息:結果摘要推送飛書
from scripts.output_generator import generate_excel, generate_json, build_feishu_message

generate_excel(results, "extracted_data.xlsx", sheet_name="Sheet1")
generate_json(results, "extracted_data.json")

# 飛書訊息卡片
msg = build_feishu_message(results, doc_type="invoice")
# feishu_im_user_message action=send ...

6. 批次處理 (scripts/batch_processor.py)

results = process_batch(
    pdf_files=["doc1.pdf", "doc2.pdf", "doc3.pdf"],
    doc_type="invoice",
    api_key="sk-xxx",
    max_workers=4,
)
generate_excel(results, "batch_output.xlsx")

定價套餐(Token字首:PDF-FREE / PDF-BSC / PDF-STD / PDF-PRO / PDF-ENT)

套餐 價格 功能
Free $0 10頁/月,發票型別,文本輸出
Basic ¥9.9/月 200頁/月,4種文件型別,Excel輸出
Standard ¥29/月 1000頁/月,批次處理,通用文件型別
Professional ¥69/月 不限頁數,JSON輸出,API優先
Enterprise ¥149/月 不限一切,多語言OCR,定製欄位模板

套餐限制配置 (scripts/tier_config.py)

from scripts.tier_config import TierConfig, TIER_LIMITS

# 檢查套餐限制
config = TierConfig(tier="PDF-BSC")
config.check_limits(pages=150, doc_types=5)  # 超出Basic限制會丟擲異常

使用示例

示例1:發票欄位提取

使用者:幫我提取這張發票的關鍵資訊
[上傳PDF: invoice.pdf]

→ 識別為"發票"型別 → 提取:發票號、日期、金額、買方、賣方、商品明細 → 輸出Excel或JSON

示例2:合同關鍵條款提取

使用者:從這份合同裡提取簽訂日期、金額、甲乙雙方和違約條款
[上傳PDF: contract.pdf]

→ 識別為"合同"型別 → AI按欄位提取 → 結構化輸出

示例3:批次處理

使用者:批次處理這10份PDF,輸出到Excel
[上傳多個PDF檔案]

→ 逐個提取 → 合併結果 → 生成Excel

示例4:通用文件(使用者自定義欄位)

使用者:從這份文件裡提取:姓名、職位、入職日期、部門
[上傳PDF]

→ 識別為"通用"型別 → AI按使用者指定欄位提取

常見問題

問題 解答
如何處理掃描件? 自動檢測無文本層PDF,觸發pytesseract OCR,支援多語言
API Key如何配置? 使用者在Agent中配置,Skill呼叫時不儲存
支援哪些輸出格式? Excel(.xlsx)和JSON,批次時優先Excel
能處理多少頁的PDF? Free版10頁/月,付費版按套餐
如何提升OCR識別率? 確保圖片清晰、解析度足夠(建議300dpi),可預處理去噪

參考資料

🤖 AI 評測

這是一款功能完整的 PDF 資訊提取工具,能夠自動識別多種文件型別並生成 Excel 或 JSON 結構化資料。核心提取能力可靠,OCR 對中文識別效果不錯,但需要使用者自己配置 API Key,對新手有一定門檻。整體質量良好,適合需要批次處理文件的使用者使用。

📊 多維度評分

適應性4.3
規範性4.5
有效性4.5
可靠性4.2
可信度4.7

📁 包含檔案 (14 個)

📄 SKILL.md 6 KB
📄 SKILLHUB.md 6.1 KB
📄 references/doc_types.md 1.9 KB
📄 references/prompts.md 2.7 KB
📄 scripts/__init__.py 1.9 KB
📄 scripts/batch_processor.py 8.6 KB
📄 scripts/doc_type_identifier.py 4.3 KB
📄 scripts/field_extractor.py 10.4 KB
📄 scripts/ocr_processor.py 6.2 KB
📄 scripts/output_generator.py 10.8 KB
📄 scripts/pdf_extractor.py 6.6 KB
📄 scripts/tier_config.py 6.9 KB
📄 tests/conftest.py 231 B
📄 tests/test_pdf_extractor.py 23.1 KB