AI 发票识别怎么用?用 Azure Document Intelligence 提取字段并复核金额

用 Azure Document Intelligence 的预生成发票模型提取供应商、日期、币种、金额和明细,再用本地校验步骤发现识别不确定项。

Azure AI Document Intelligence 的预建发票模型 prebuilt-invoice 能从发票 PDF 或图像提取字段和行项目,返回结构化结果及字段置信度。下面用 Python SDK 对 Microsoft 提供的公开样例发票发起分析,读取供应商、发票号和总额;真实文件要先确认组织允许上传,并在进入付款或记账流程前由人逐项复核。

准备资源和安全凭据

  1. 在 Azure 门户创建 Document Intelligence 资源,记录该资源的 endpoint 和 key。使用有权访问该资源的订阅和区域。
  2. 在本地虚拟环境安装官方 Python SDK:pip install azure-ai-documentintelligence==1.0.2。此版本与本文核对的 Azure API v4.0 文档相符;开发前仍应查看 Microsoft quickstart 当前版本。
  3. 把 endpoint 和 key 设置为环境变量 AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT 与 AZURE_DOCUMENT_INTELLIGENCE_KEY。不要把密钥硬编码进脚本、提交到 Git 或贴进共享工单。

用预建模型分析公开样例发票

以下最小示例使用 Microsoft Azure Samples 的公开测试 PDF,因此不需要把自己的账单上传到公共网址。真实文件可按官方 SDK 文档选择受控的文件流输入方式,并确认数据处理和存储要求。

AI 发票识别怎么用?用 Azure Document Intelligence 提取字段并复核金额

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.documentintelligence import DocumentIntelligenceClient
from azure.ai.documentintelligence.models import AnalyzeDocumentRequest

endpoint = os.environ["AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT"]
key = os.environ["AZURE_DOCUMENT_INTELLIGENCE_KEY"]
sample_url = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf"

client = DocumentIntelligenceClient(endpoint, AzureKeyCredential(key))
poller = client.begin_analyze_document(
    "prebuilt-invoice", AnalyzeDocumentRequest(url_source=sample_url)
)
result = poller.result()  # SDK 等待长时间运行的分析任务完成并取回结果

for invoice in result.documents or []:
    for name in ("VendorName", "InvoiceId", "InvoiceDate", "InvoiceTotal", "SubTotal", "TotalTax"):
        field = invoice.fields.get(name)
        if field is None:
            print(name, "未识别")
            continue
        if field.value_currency is not None:
            typed_value = f"{field.value_currency.amount} {field.value_currency.currency_code}"
        elif field.value_date is not None:
            typed_value = field.value_date.isoformat()
        else:
            typed_value = field.content
        print(name, "content=", field.content, "typed_value=", typed_value,
              "confidence=", field.confidence)

在 azure-ai-documentintelligence==1.0.2 中,invoice.fields 的值是 DocumentField 模型;应读 field.content、field.confidence 等属性,而不是假定字段本身是字典。日期类型用 value_date.isoformat() 变成可序列化字符串;金额类型从 value_currency.amount 与 currency_code 读取数值和币种,避免只打印格式化文字后丢失类型。

begin_analyze_document 返回长时间运行任务的 poller,poller.result() 会等待任务完成并读取结果,不要在结果尚未完成时把请求当成成功。SDK 管理分析操作的轮询;使用 REST 而非 SDK 时,应按该 API 的响应头保存操作位置,并按官方接口要求轮询直到终态,再读取结果;不要猜测或拼接操作 ID。

先读结果,再对照原件复核

逐张检查 result.documents 中是否有发票对象;每个字段一般包含识别内容和置信度。模型字段可见性因版式而异,空缺值应保留为空并转人工处理。官方 JSON 输出也包含页级结果、表格单元格与文本定位信息,可用于回查原文位置。

字段 人工检查
VendorName、InvoiceId 与原件抬头、发票号码逐字对照,留心 O/0、I/1 等近似字符。
InvoiceDate、币种 检查日期格式和币种符号,避免把月日顺序或币种识错。
InvoiceTotal、SubTotal、TotalTax 与原件汇总区核对,并按该发票的税额、折扣、运费及舍入规则重算。
低置信字段或缺失字段 列为必审项;即使置信度较高,也不能代替财务审批或原件核验。

可以在自己的审批流程中设置人工复核阈值,但阈值应以代表性样本验证后制定,不能把某个任意百分比当成微软保证的准确率。金额不平、字段缺失、币种不明或原件模糊时,暂停自动入账。

Studio 快速试跑与适用边界

不写代码时,在 Document Intelligence Studio 打开预建模型体验,选择 Invoice 模型、上传获准处理的测试文件并启动分析;完成后查看关键值、行项目及高亮位置。公开门户入口和账号权限可能变化,若无法访问则先检查订阅、区域和资源权限,再用上述 SDK 快速入门。

微软说明该模型使用 OCR 处理数字 PDF、扫描件和拍摄图像,但图像质量、版式和遮挡会影响字段结果。真实发票包含客户、供应商和付款资料,上传前应确认数据分类、服务地区、组织授权和保留规则。本文的公开样例演示不是本站租户实测;不得将模型输出直接作为付款指令。

参考:Microsoft Learn:Invoice data extraction、Microsoft Learn:Document Intelligence SDK/REST quickstart、Azure SDK for Python 1.0.2:DocumentField 类型定义(查阅日期:2026-10-01)。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32370.html

赞 (0)
AI小管家的头像AI小管家
ChatGPT 怎么做数据透视表?用销售明细汇总区域业绩并核对总额
上一篇 1小时前
PDF 表格怎么用 ChatGPT 转 Excel?提取为 CSV 后核对行列与金额
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部