LandingAI 这个思路很实在:先让解析器看懂每一页是什么,再针对不同页面用不同字段模板抽。比一套模板通吃靠谱多了。
LandingAI 提出 Agentic Document Extraction (ADE) 范式,将传统文档解析的盲抽改为先分类后抽取。ADE Classify 阶段对 PDF 逐页并发评估,分配类别标签(如工资单、银行流水),outlier 页面标记兜底。ADE Extract 阶段按类别应用对应 Pydantic schema(工资单字段:雇员姓名、发薪周期、毛薪、净薪;银行流水:银行名、账号、余额)。每个抽取值附带 chunk reference 和 page-level bounding box,实现值到源图物理坐标的可溯源审计。该范式解决了税表里抽净薪资、身份证页抽账户号等字段错配问题。
LandingAI 的「先分类后抽取」文档解析范式 把传统文档解析「按统一规则硬抽」的盲抽方式,改成先给每一页打标签、再用对应 schema 抽取的流水线,让解析器从「盲读」变为「看懂再读」。 痛...
LandingAI 的「先分类后抽取」文档解析范式 把传统文档解析「按统一规则硬抽」的盲抽方式,改成先给每一页打标签、再用对应 schema 抽取的流水线,让解析器从「盲读」变为「看懂再读」。 痛点:盲抽的根因 一份贷款申请 PDF 里往往混杂工资单、银行流水、税表、身份证件,传统解析器对所有页面套同一套字段模板。结果是:从税表里抽「净薪资」、从身份证页里抽「账户号」——抽出的是「模板要的」,而不是「页面有的」。本质问题是解析器不知道自己在解析什么。 解法:Classification before Extraction 整个工作流被拆成两个明确阶段,关键在于顺序: 阶段 1 — ADE Classify(先分类) · 逐页并发评估,为每一页独立分配类别标签(注意粒度是 page,不是 document,因为一份 PDF 内可能跨类型)。 · 类别路由到对应流水线:工资单 → 工资单流水线、银行流水 → 银行流水流水线。 · outlier 兜底:不符合任何已知类别的页面不会硬塞,而是被标记并给出建议类别,交给人工或后续流程处理。 阶段 2 — ADE Extract(后抽取) · 按类别应用对应的 Pydantic schema,而非一套通配 schema。 · 工资单 → 雇员姓名、发薪周期、毛薪、净薪 · 银行流水 → 银行名、账号、余额 · 核心反转:schema 跟着页面走,而不是页面去凑 schema。 不可忽视的工程价值:Visual Grounding 每个抽出的值都带回两类引用: · chunk reference:映射回解析文档的具体切片 · page-level bounding box:在原图上框出该数值的来源区域 这意味着每个数字都可回溯到源——这在金融、合规、审计场景里不是「nice to have」,而是审计链 (audit trail) 的硬要求。LLM 抽取最被诟病的「凭空生成」在这里被物理坐标证伪。 LandingAI @LandingAI Your document parser is blind to what it is parsing! A loan packet lands as one PDF carrying pay stubs, bank statements, tax returns, and IDs. The parser reads every page the same way, so it pulls fields that fit none of them. The parser needs to know what it is reading before it reads it. The fix is classification before extraction, not after. Each page needs a label before any schema gets applied to it. Agentic Document Extraction (ADE) fixes this. ADE Classify evaluates every page concurrently and assigns a label per page. Pay stubs route to the pay stub pipeline. Bank statements route to their own. Pages that do not fit get flagged with a suggested class. ADE Extract then applies the matching Pydantic schema per type. A pay stub returns employee name, pay period, gross pay, and net pay. A bank statement returns bank name, account number, and balance. The schema follows the page, not the other way around. Every value comes back with a chunk reference and a page-level bounding box, so each number traces back to its source. Full working notebook example in the comments. 🔗 View Quoted Tweet 💬 4 🔄 0 ❤️ 4 👀 810 📊 5 ⚡