Document Intelligence Parsing — LLM 驱动的文档智能解析:图文统一 OCR、跨页表格恢复、布局感知推理
Skill-Document-Intelligence-Parsing · 22-数据采集工程
causalexperimentforecastingoptimizationragdata_collectionpricingvisual_generation推荐与搜索知识图谱与RAG数据采集与治理定价与利润风控与合规视觉内容生成WF-D 选品扫描WF-F 动态定价
实现难度⭐⭐☆☆☆
业务视角
适用角色数据工程师 / 技术负责人 · 运营负责人 · 选品负责人
适用平台Amazon SP API + Keepa · TikTok Shop API · 跨境多平台数据湖
什么情况下用想监控竞品价格/评论/排名但没有稳定采集能力,手动太慢;多平台数据分散整合成本极高;数据管道不稳定经常断
成功是什么样的竞品价格/评论数据每日自动更新,多平台数据统一入仓,数据管道稳定性 >99%,取数时间从小时降到分钟
业务痛点
1. 解决的问题
供应商发来的报价单是 PDF,工厂产能表是 Excel 截图,海关 HS 编码文件是扫描件——这些"已有但不可用"的数据是母婴跨境电商最大的数据孤岛。传统 OCR(Tesseract)只能识别文字,无法理解表格结构、跨页截断、图文混排。
2. 核心算法逻辑
供应商发来的报价单是 PDF,工厂产能表是 Excel 截图,海关 HS 编码文件是扫描件——这些"已有但不可用"的数据是母婴跨境电商最大的数据孤岛。传统 OCR(Tesseract)只能识别文字,无法理解表格结构、跨页截断、图文混排。
3. 业务应用场景
业务背景:每季度收到 15-20 家供应商的 PDF 报价单,每份 5-30 页,包含 SKU 表格(商品名/规格/MOQ/阶梯价格/交期)。目前人工录入需要 3-4 天,错误率约 8%。
业务背景:新品进入欧盟市场前需要检查 CE 声明、REACH 合规报告(通常为 PDF 扫描件),判断是否满足合规要求。
应用效果: - dots.mocr 从合规 PDF 中提取检测项目表格 - Qianfan-OCR 正确识别化学品限制值表格(多层表头:物质名 / 测试方法 / 限制值 / 检测值 / 结论) - 自动对比 REACH 法规阈值 → 生成合规预检报告 - 时间:人工 2h/份 → 自动化 5min/份
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
未自动抽取;请查看原始 Skill 卡片。
7. 代码模板
代码块数量:5 · 路径:未检测到
"""
Document Intelligence Parsing
整合 dots.mocr (图文统一) + Qianfan-OCR (布局推理) + MinerU-Popo (跨页表格)
论文来源:
dots.mocr: arXiv:2603.13032
Qianfan-OCR: arXiv:2603.13398
MinerU-Popo: arXiv:2605.24973
"""
import json
import re
from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional, Tuple
from enum import Enum
class DocumentElementType(Enum):
TEXT = "text"
TABLE = "table"
FIGURE = "figure"
TITLE = "title"
LIST = "list"
@dataclass
class TableCell:
value: str
row_span: int = 1
col_span: int = 1
is_header: bool = False
@dataclass
class ParsedTable:
headers: List[List[str]]
rows: List[List[str]]
caption: str = ""
page_start: int = 0
page_end: int = 0
is_truncated: bool = False
def to_dicts(self) -> List[Dict[str, str]]:
if not self.headers or not self.rows:
return []
flat_headers = self.headers[-1] if len(self.headers) > 1 else self.headers[0]
return [
{flat_headers[i]: row[i] for i in range(min(len(flat_headers), len(row)))}
for row in self.rows
]
@dataclass
class ParsedFigure:
figure_type: str
caption: str
extracted_data: Dict[str, Any] = field(default_factory=dict)
certifications: List[str] = field(default_factory=list)
8. 论文来源
- 2603.13032
- 2603.13398
- 2605.24973