Mistral OCR 4真正改变的不是“识字”:文档AI正在变成Agent的数据入口

1. OCR 4最重要的升级,不是把PDF变成Markdown

传统OCR的核心任务很简单。

图片里有什么字。

然后把它输出成文本。

但企业文档真正复杂的地方,从来不只是文字本身。

标题在哪里。

表格在哪里。

公式属于哪一段。

签名在哪个区域。

页眉页脚是否应该进入检索。

模型对当前识别结果有多大把握。

OCR 4真正有价值的地方,是把这些信息一起返回。

复制代码
Document
  ↓
OCR 4
  ↓
Page
  ├── Markdown
  ├── Tables
  ├── Images
  ├── Blocks
  │   ├── title
  │   ├── text
  │   ├── table
  │   ├── equation
  │   ├── code
  │   ├── signature
  │   └── footer
  ├── Bounding Boxes
  └── Confidence Scores

这已经不是单纯"识字"。

更接近文档解析器。

2. 先跑一个最小OCR 4调用

Mistral官方SDK可以直接通过client.ocr.process调用。

复制代码
import os
from mistralai.client import Mistral

client = Mistral(
    api_key=os.environ["MISTRAL_API_KEY"]
)

response = client.ocr.process(
    model="mistral-ocr-4-0",
    document={
        "type": "document_url",
        "document_url": "https://arxiv.org/pdf/2201.04234",
    },
    table_format="html",
    include_blocks=True,
    confidence_scores_granularity="word",
)

for page in response.pages:
    print(page.markdown)

这里最值得注意的并不是markdown字段。

而是include_blocks和confidence_scores_granularity。

前者让系统拿到结构块。

后者让系统知道哪些内容可能识别错了。

3. Bounding Box为什么会改变RAG质量

很多RAG系统今天仍然使用非常粗糙的Chunk方式。

每500个Token切一次。

或者每1000个字符切一次。

这种做法最大的问题是它完全不知道文档结构。

标题可能和正文被拆开。

表格可能从中间被切断。

公式可能脱离解释段落。

OCR 4返回的Block可以成为更自然的Chunk边界。

复制代码
def build_chunks(page):
    chunks = []
    current = {"title": None, "content": []}

    for block in page.blocks or []:
        if block.type == "title":
            if current["content"]:
                chunks.append(current)
            current = {
                "title": block.content,
                "content": [],
            }
            continue

        if block.type in {
            "text", "list", "table",
            "equation", "code",
        }:
            current["content"].append({
                "type": block.type,
                "content": block.content,
                "bbox": [
                    block.top_left_x,
                    block.top_left_y,
                    block.bottom_right_x,
                    block.bottom_right_y,
                ],
            })

    if current["content"]:
        chunks.append(current)

    return chunks

这时候Chunk不再只是一个字符串。

它还知道自己来自哪个标题。

属于哪种内容。

在原页面的哪个位置。

CHUNK-101|FIXED_TOKEN_SPLIT

直接按照固定Token长度切文档,会破坏标题、表格、公式和段落之间的真实语义边界。

4. Confidence Score不是装饰,它决定什么时候必须人工复核

OCR系统最危险的情况,不是完全识别失败。

而是看起来识别成功,实际上有关键数字错了。

例如发票金额。

合同日期。

银行账号。

技术参数。

OCR 4允许返回Page级和Word级Confidence。

这意味着系统可以自动做风险分流。

复制代码
def review_policy(page):
    scores = page.confidence_scores

    if not scores:
        return "auto_pass"

    average = scores.average_page_confidence_score
    minimum = scores.minimum_page_confidence_score

    if minimum < 0.70:
        return "human_review"

    if average < 0.90:
        return "secondary_model"

    return "auto_pass"

高置信度自动流转。

中置信度二次模型检查。

低置信度进入人工审核。

CONF-202|IGNORE_CONFIDENCE

OCR已经返回置信度,但下游系统仍把所有字段当作100%正确,会把识别误差直接传入数据库和Agent。

5. OCR 4为什么特别适合作为Agent的"文档入口"

Agent要对文档采取行动,首先必须把文档变成机器可理解的数据结构。

只有全文字符串是不够的。

例如一个合同Agent需要知道哪一块是标题、哪一块是付款条款、哪一块是签名,以及风险条款来自哪一页。

复制代码
PDF
 ↓
OCR 4
 ↓
Structured Blocks
 ↓
Document Classifier
 ↓
Business Agent
 ├── 合同审核
 ├── 发票校验
 ├── 报表分析
 ├── 知识库入库
 └── PPT生成

从这个角度看,OCR 4真正的位置不是"工具箱里的OCR"。

而是Agent的数据入口层。

6. Structured Annotation让文档直接变成业务JSON

Mistral Document AI还支持Annotations。

这层能力特别适合发票、合同、表单和业务报表。

开发者可以先定义希望得到的结构。

复制代码
from pydantic import BaseModel

class Invoice(BaseModel):
    invoice_number: str
    vendor_name: str
    invoice_date: str
    total_amount: float
    currency: str

然后让Document AI按照Schema提取。

这样下游系统不需要再从一大段Markdown里二次正则解析。

Agent真正需要的往往不是"读懂这张发票"。

而是拿到字段、检查金额,再调用后续业务系统。

7. Bounding Box还能解决"答案到底来自哪"

RAG系统非常常见的一个问题是模型回答了,但用户不知道它到底从PDF哪一块读出来的。

有了Bounding Box以后,可以把检索结果反向定位到页面区域。

复制代码
retrieval_result = {
    "text": "付款周期为30天",
    "page": 7,
    "bbox": {
        "x1": 0.18,
        "y1": 0.42,
        "x2": 0.72,
        "y2": 0.48,
    },
    "block_type": "text",
}

前端就可以把原PDF第7页对应区域高亮。

这对于合同审核、医疗、财务和知识库系统非常重要。

因为"答案正确"之外,还需要"证据可追溯"。

8. 一个生产级文档工作流应该长这样

复制代码
Upload
  ↓
Document Type Check
  ↓
OCR 4
  ↓
Block Extraction
  ↓
Confidence Gate
  ├── Low → Human Review
  └── Pass
        ↓
Structured Annotation
        ↓
Semantic Chunking
        ↓
Embedding / Index
        ↓
Agent / RAG
        ↓
Business Action
        ↓
Audit Log

STEP 1|OCR

负责把原始PDF、图片、DOCX或PPTX转成结构化页面内容。

STEP 2|Confidence Gate

负责判断当前结果能否自动进入下一步。

STEP 3|Annotation

负责把文档内容映射成业务需要的结构化字段。

STEP 4|RAG / Agent

负责理解业务问题,并调用工具执行后续动作。

STEP 5|Audit

保存原文位置、提取结果、人工修订和最终操作。

9. 为什么"手写也能识别"不是最重要的卖点

视频热点里最容易吸引眼球的是复杂报表能识别、手写内容也能处理。

这些当然有价值。

但从开发者角度看,更关键的是结果能不能程序化消费。

Bounding Box。

Block Type。

Confidence。

Structured Annotation。

这些能力才真正决定OCR能不能进入企业自动化系统。

10. 大规模文档处理,还要考虑Batch而不是只写for循环

如果每天处理10个PDF,同步调用就够了。

如果每天处理10万页,架构就完全不同。

Mistral官方也明确建议大规模OCR使用Batch Inference。

生产系统还需要自己补上任务状态和幂等。

复制代码
from dataclasses import dataclass

@dataclass
class DocumentJob:
    job_id: str
    source_uri: str
    status: str
    retry_count: int = 0
    content_hash: str | None = None
    result_uri: str | None = None

同一份文档不要因为用户重复点击就处理三遍。

Content Hash可以用来做幂等。

JOB-303|NO_IDEMPOTENCY

文档任务没有内容哈希或幂等Key,重复上传会重复计费、重复入库,并生成多份冲突结果。

11. OCR 4的成本为什么适合做独立路由

Mistral官方当前给OCR 4的标准价格是每1000页4美元。

带Annotations的Document AI价格是每1000页5美元。

这意味着平台完全可以把普通OCR和业务结构化抽取拆成两条路线。

复制代码
def route_document_task(task):
    if task.need_structured_fields:
        return "document_ai_annotation"

    if task.need_bbox:
        return "ocr4_blocks"

    return "ocr4_basic"

不是每一个PDF都需要跑最完整的处理链。

根据任务需要动态升级,才能控制长期成本。

12. 对聚合500+模型的平台来说,OCR应该处在什么位置

如果一个平台同时有文本、图片、视频、音频、智能体、无限画布、AI漫剧和AI PPT能力,OCR模型不应该只是单独放在一个工具页面里。

更合理的位置是输入层。

复制代码
User Document
   ↓
OCR / Document AI
   ↓
Structured Assets
   ├── Markdown
   ├── Tables
   ├── Images
   ├── BBoxes
   └── JSON Fields
   ↓
Model Router
   ├── Text Model
   ├── Agent
   ├── AI PPT
   ├── Knowledge Base
   └── Workflow

一份PDF被解析以后,可以继续进入不同模型。

合同交给审查Agent。

报告交给AI PPT。

论文进入知识库。

表格进入数据分析模型。

这时候多模型平台的价值,才从模型数量变成工作流能力。

13. 六个文档AI系统最容易踩的坑

OCR-101|TEXT_ONLY_PIPELINE

只保存最终纯文本,丢掉Block、Bounding Box和原始页面关系,下游无法做证据定位。

CHUNK-202|FIXED_SIZE_ONLY

所有文档都按照固定Token长度切分,不利用标题、表格和结构块作为语义边界。

CONF-303|NO_CONFIDENCE_GATE

低置信度字段直接进入数据库和Agent,没有二次模型检查或人工审核。

RAG-404|NO_SOURCE_LOCATION

检索结果没有页码和坐标,模型回答以后用户无法回到原文验证。

JOB-505|NO_IDEMPOTENCY

同一文档重复上传导致多次处理、重复计费和重复索引。

ROUTE-606|FULL_PIPELINE_FOR_ALL

所有文档都跑最贵的完整Annotation流程,没有按照业务需求区分基础OCR与结构化提取。

14. 最后:OCR正在从"识字工具"变成AI系统的数据基础设施

过去我们讨论OCR,核心指标是识别率。

现在这个问题已经不够了。

真正进入Agent时代以后,还要问内容在哪里、它是什么类型、模型有多确定、能不能变成业务字段、能不能回到原文定位证据、能不能在低置信度时自动进入人工审核。

Mistral OCR 4真正值得关注的地方,就在这里。

它不只是把文档变成文字,而是在把文档变成Agent可以安全消费、检索、验证和执行的数据结构。

资料说明:

Mistral AI于2026年6月23日正式发布OCR 4,模型ID为mistral-ocr-4-0。

官方OCR文档说明OCR 4支持include_blocks、段落级Bounding Box、结构块标签、Page / Word级Confidence Score、表格格式化、页眉页脚提取等能力。

官方Document AI还提供BBox Annotation与Document Annotation,可按开发者提供的Schema输出结构化JSON。

OCR 4当前标准价格为4美元/1000页,Document AI Annotated Pages为5美元/1000页。

本文中的路由、Chunk、Review Gate、幂等和多模型工作流代码均为工程设计示例。

相关推荐
JavaGuide44 分钟前
GitHub 4.5 万+ Star!GitNexus 把代码仓库变成了 Claude Code / Codex 能查询的知识图谱
后端·ai编程
新知图书1 小时前
7.1 User特质的周期提取与自进化(智能体工程)
人工智能·agent·ai agent·智能体
阿里云大数据AI技术1 小时前
免费领票!9月22日-24日,2026云栖大会杭州见
大数据·人工智能·agent
circuitsosk1 小时前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
IvanCodes1 小时前
我做了一个软著 Skill,可以一键生成申请材料
人工智能·agent
小虎AI生活1 小时前
DeepSeek Harness 技术拆解:全插件架构、九项能力对比与本地实测
ai编程
狂奔蜗牛(bradley)1 小时前
RKNN‑Toolkit2 模型转换全流程
人工智能
双星系统1 小时前
双臂机器人迎来广阔应用风口!既是工业柔性主力,也是人形机器人优质上肢配件
人工智能·机器人
羚羊角uou1 小时前
【AI agent】RAG 全链路深度详解及RAG调优策略
人工智能