Install
openclaw skills install pdf-field-extractor基于AI的PDF结构化字段提取工具,支持发票、合同等多文档类型,输出Excel或JSON格式,含OCR扫描件识别。
openclaw skills install pdf-field-extractorAI驱动的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")
scripts/pdf_extractor.py)# 返回:(full_text, tables_list, has_text_layer)
text, tables, is_scanned = extract_pdf_text("document.pdf")
scripts/ocr_processor.py)# 返回:OCR识别后的文本
ocr_text = process_ocr(image_path, lang="chi_sim+eng")
scripts/field_extractor.py)fields = extract_fields(
text="发票号:12345678\\n日期:2024-01-01\\n金额:1000.00",
doc_type="invoice",
custom_fields=["发票号", "日期", "金额", "买方", "卖方"],
api_key="sk-xxx",
model="gpt-4o",
)
scripts/doc_type_identifier.py)doc_type = identify_doc_type(text)
# 返回: "invoice" | "contract" | "license" | "id_card" | "receipt" | "bank_statement" | "express" | "generic"
scripts/output_generator.py)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 ...
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")
| 套餐 | 价格 | 功能 |
|---|---|---|
| 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限制会抛出异常
用户:帮我提取这张发票的关键信息
[上传PDF: invoice.pdf]
→ 识别为"发票"类型 → 提取:发票号、日期、金额、买方、卖方、商品明细 → 输出Excel或JSON
用户:从这份合同里提取签订日期、金额、甲乙双方和违约条款
[上传PDF: contract.pdf]
→ 识别为"合同"类型 → AI按字段提取 → 结构化输出
用户:批量处理这10份PDF,输出到Excel
[上传多个PDF文件]
→ 逐个提取 → 合并结果 → 生成Excel
用户:从这份文档里提取:姓名、职位、入职日期、部门
[上传PDF]
→ 识别为"通用"类型 → AI按用户指定字段提取
| 问题 | 解答 |
|---|---|
| 如何处理扫描件? | 自动检测无文本层PDF,触发pytesseract OCR,支持多语言 |
| API Key如何配置? | 用户在Agent中配置,Skill调用时不存储 |
| 支持哪些输出格式? | Excel(.xlsx)和JSON,批量时优先Excel |
| 能处理多少页的PDF? | Free版10页/月,付费版按套餐 |
| 如何提升OCR识别率? | 确保图片清晰、分辨率足够(建议300dpi),可预处理去噪 |