如何用 Zerox 完成 OCR 文档识别三步跑通:把 PDF、发票、表格变成 Markdown
2026/9/14 10:32:10 网站建设 项目流程

如何用 Zerox 完成 OCR 文档识别三步跑通:把 PDF、发票、表格变成 Markdown

【免费下载链接】zeroxOCR & Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox

一堆 PDF 合同、发票、扫描图,文字选不中、表格拷不走,手动录入费时费力。Zerox 是一个 OCR 文档识别工具:把文件丢给它,它调用视觉模型逐页阅读,直接返回完整的 Markdown 文本。几行代码,就能搭出一条简单、快速的文档转文字流水线。

项目定位与工作原理

Zerox 的思路很直接:它自己不写复杂的版式解析,而是把"阅读"交给视觉模型,自己只负责"准备"。你传入一个文件(PDF、Word、Excel、PPT、图片等 24 种格式),Zerox 把它转成一串页面图片;每张图片发给视觉模型(GPT-4o、Claude 3、Gemini 等),请它转写出这一页的 Markdown;最后把每页结果按顺序拼回,返回完整文档。因为是"看着读",它天然能应付表格、图表、多栏排版这类传统 OCR 头疼的版式。

三分钟上手:安装依赖并跑通第一次转换

两步就能完成:装包,再写一小段脚本。

npm install zerox sudo apt-get install -y graphicsmagick

第一行安装 zerox 包;Linux 上第二行补装 graphicsmagick,它负责把 PDF 转成图片(npm 自动安装成功的话可以跳过)。习惯 Python 的话,pip install py-zerox也可以,但系统需要装 poppler。

import { zerox } from "zerox"; const result = await zerox({ filePath: "./invoice.pdf", credentials: { apiKey: process.env.OPENAI_API_KEY }, }); console.log(result.pages[0].content);

这段代码做的事:让视觉模型(默认 GPT-4o)读一遍invoice.pdf,打印出第一页的 Markdown。result里还带每页的 token 数、耗时和成功/失败统计,方便你监控批量任务。仓库 examples/node/ 目录下还有 OpenAI、Azure、Bedrock、Gemini 四家现成的接入示例。

功能亮点:它能替你做什么

除了基础识别,有四个功能最实用。

多种格式文件,不用自己先转换

PDF、Word(.doc/.docx)、Excel、PPT、HTML、图片都能直接喂进去,非 PDF 文件会自动先转成 PDF 再转图片。只处理部分页面时,传pagesToConvertAsImages: [1, 3, 5]即可。

表格与跨页内容可以保住

开启maintainFormat: true后,上一页的转写结果会作为上下文传给下一页,跨两页断开的表格能拼回一张。注意它需要逐页顺序执行,比并行慢不少,文档里表格多、或有表格跨页时才值得开。

不想要全文?只抽你要的字段

设置extractOnly: true并传入一个schema(JSON Schema 格式),就能只拿到发票号、金额、日期这些你定义的字段,不用翻整篇 Markdown。文档页数多时还可以加extractPerPage: true,逐页抽取。

模型供应商换一行就能切换

OpenAI、Azure OpenAI、AWS Bedrock(Claude 3 系列)、Google Gemini 都支持,改一下modelProvider和对应的凭据就行。Python 版基于 LiteLLM 接了更多模型厂商,还支持 Vertex AI 和自定义系统提示词。完整参数清单见 README.md。

真实场景:把一沓发票批量整理成表格

最常见的实用场景就是批量抽取发票字段,整个过程分三步。

想达成什么:手头有 20 份 PDF 发票,想把每份的发票号码、开票日期、价税合计整理进一张 Excel 表,但不想逐份手敲。

怎么配置:用schema参数定义这三个字段(写type: object加三个properties即可),打开extractOnly: true,循环处理发票目录。发票页数多的话再加上extractPerPage: true,让每页重复出现的表头字段也能抽到。

得到什么:每份文件返回一个结构化 JSON 对象,直接写进表格即可,人工誊写这步消失了。

踩坑与调优

新手最容易卡住的有三个地方。

1. 环境依赖不只是一条 npm 命令。Node 版靠 graphicsmagick/ghostscript 把 PDF 转图片,Linux 上经常需要手动 apt 安装;Python 版依赖 poppler。报"文件转换失败"类错误时,先查这两处。

2. maintainFormat 是个速度开关。它逐页串行执行,处理时长明显增加。普通文字文档别开,只有表格多、表格跨页时才值得付出这个代价。

3. 并发与成本要平衡。默认 10 个页面并行,小文档可以降到 5;撞到模型供应商的限流时,降并发或依赖maxRetries(默认重试 1 次)。想省 token,可以把imageDensity(默认 300 DPI)和imageHeight(默认 2048)调低以压缩图片,小文档用 gpt-4o-mini 这类便宜模型也够用。

Zerox 适合两类人:需要把一堆杂乱文档喂给 AI 做问答的,以及想搭一条简单文档数字化流水线的。建议先用一份小发票把示例跑通,再处理更大的文档;想看源码或仓库里自带的 40 份真实测试文档,直接克隆下来就能动手:

git clone https://gitcode.com/GitHub_Trending/ze/zerox

Zerox OCR 文档识别 PDF 转 Markdown 转换 视觉模型文档提取 发票字段抽取

【免费下载链接】zeroxOCR & Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询