| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """
- Phase 1: 招标文件解析 — PDF 表格提取
- 封装 pdf_table_to_docx 模块,提取 PDF 中的表格到 DOCX 文件。
- 用法:
- from phase1_parsing.extract_pdf_tables import extract_tables
- meta = extract_tables("data/招标文件.pdf", "output/tables/")
- """
- import os
- import json
- def extract_tables(pdf_path: str, output_dir: str = "output/phase1_tables") -> dict:
- """
- 从 PDF 提取表格,保存为独立 DOCX 文件 + JSON 元数据。
- Args:
- pdf_path: PDF 文件路径
- output_dir: 输出目录
- Returns:
- tables.json 的元数据字典
- """
- from pdf_table_to_docx.extractor import PDFTableExtractor
- os.makedirs(output_dir, exist_ok=True)
- extractor = PDFTableExtractor(pdf_path)
- result_dir = extractor.to_docx_directory(
- output_dir=output_dir,
- page_width_cm=21.0,
- page_height_cm=29.7,
- margin_cm=2.0,
- )
- metadata_file = os.path.join(result_dir or output_dir, "tables.json")
- if os.path.exists(metadata_file):
- with open(metadata_file, "r", encoding="utf-8") as f:
- meta = json.load(f)
- print(f"[Phase1] 表格已提取: {meta.get('total_tables', 0)} 个表格")
- return meta
- print("[Phase1] 未检测到表格")
- return {"total_tables": 0, "tables": []}
- if __name__ == "__main__":
- meta = extract_tables("data/松江区机关事务管理局物业管理服务招标文件.pdf")
- for t in meta.get("tables", []):
- print(f" 表{t['id']}: {t['rows']}行{t['cols']}列 页码{t['pages']}")
|