📄 非结构化数据提取:用 AI 与 PDF 插件处理发票

企业办公中最令人头疼的一环,往往是从各种版式复杂的 PDF、发票或研报中手动提取数据。

利用 MindLogic 内置的 Native PDF Extractor(原生 PDF 提取器)插件和 LLM 结构化提取能力,我们可以瞬间将死板的非结构化文档变成可供下游系统读取的 JSON 数据库。

场景概述

在这个流程中,我们实现:

  1. 输入文件:传入一个含有报表/发票的本地或远程 PDF 文件路径。
  2. 文本解析:使用 PDF 插件将所有文本提取为长字符串。
  3. 字段抽取:大模型读取长字符串,并被强制要求以特定的 JSON 格式提取金额、日期和客户名。
  4. 数据校验:自定义节点脚本解析 JSON,判断金额是否超标。

节点编排步骤

第一步:配置 PDF 提取插件

创建一个节点,命名为 [Invoice Reader]。 在插件面板选择 Native PDF Extractor。 配置输入的 URL/Path,它可以是一个本地路径(如 file:///Users/.../invoice.pdf)或云端链接。 执行后,PDF 纯文本将存放于 node.outputs['pdf_text'] 中。

第二步:大模型结构化抽取

创建一个节点,命名为 [Data Extraction],连线自上游。

  1. 选用大模型插件。
  2. System Prompt(极为关键,强制输出格式):
    你是一个发票数据提取机器人。请从下方文本中提取信息,并严格输出合法的 JSON 格式。不要输出任何除了 JSON 之外的说明文本。
    格式要求:
    {
       "company_name": "公司名",
       "date": "YYYY-MM-DD",
       "total_amount": 数字
    }
    
  3. User Prompt: {{ node.inputs['pdf_text'] }} 大模型执行完毕后,将会输出一段纯净的 JSON 字符串。

第三步:脚本层面的业务校验

创建一个节点,命名为 [Business Logic Audit]。 这一步不使用插件,而是直接在底部的节点脚本中处理上游传递过来的 JSON。

let jsonStr = node.inputs['response'];
try {
    let invoiceData = JSON.parse(jsonStr);
    let amount = invoiceData.total_amount;
    
    // 如果金额超过 10000,修改节点标题并改变颜色警报
    if (amount > 10000) {
        node.title = "⚠️ 需要总监审批";
        node.color = "red";
    } else {
        node.title = "✅ 自动通过审批";
        node.color = "green";
    }
} catch (e) {
    node.title = "❌ 解析失败";
    node.outputs['__scriptError'] = e.toString();
}

成果与价值

这是一个典型的“混合型节点自动化”。你不仅使用了前沿的 AI 技术,还回归了传统代码逻辑的严谨性。 通过 MindLogic,你把一个原本需要程序员写几百行 Python 代码并部署服务器才能跑起来的服务,变成了一个在画布上连连线就能搞定的可视化小程序