
3 步把 PDF 变成 MarkdownZerox OCR 文档提取上手指南【免费下载链接】zeroxOCR Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox把一份带表格的 PDF 或扫描发票喂给 AI第一个麻烦是怎么把内容变成干净、有结构的形式。Zerox OCR 就是做这件事的文档提取工具传入 PDF、Word、表格或图片它逐页拆分识别输出完整的 Markdown。只需准备一个视觉模型的 API Key 就能跑通。Zerox 文档提取原理文件是怎么变成 Markdown 的Zerox 的思路很直接把每一页当成一张图让视觉模型来读。整个流程分四步传入文件支持 PDF、Word、Excel、PPT、HTML、纯文本等非 PDF 的文件先由 LibreOffice 转成 PDF。每一页被渲染成图片这一步依赖系统的 GraphicsMagick 或 Ghostscript分辨率DPI可调。每张图片发给视觉模型GPT-4o、Gemini、Claude 等要求它按 Markdown 输出这一页的内容。各页的输出按页序拼成一份完整文档同时返回每页结果、token 用量和成功/失败统计。因为模型是看页面而不是解析文本层排版、表格、图表不需要额外处理。下面这种多表格混排的运输发票就是典型的输入从安装到第一次提取文档的完整步骤以 Node.js 版本为例一共三步。第一步安装 npm 包npm install zerox第二步确认系统依赖Linux 上执行一次sudo apt-get install -y graphicsmagick即可PDF 转图片依赖它包安装时通常也会自动拉取同时把OPENAI_API_KEY配置成环境变量。第三步写最小调用。下面的代码把本地 PDF 交给默认模型并打印第一页的识别结果import { zerox } from zerox; const result await zerox({ filePath: invoice.pdf, credentials: { apiKey: process.env.OPENAI_API_KEY }, }); console.log(result.pages[0].content);返回值里pages是每页的 Markdown 内容summary记录总页数和 OCR 成功/失败情况completionTime是耗时毫秒。如果习惯 Pythonpip install py-zerox后调用pyzerox.zerox即可下面的选型一节会展开两者的差异。核心能力拆解跨页表格、结构化提取与容错Zerox 不只是整份文档一次性识别几个能力对实际使用帮助很大。跨页表格还原不再手动拼行表格跨两页时表头只在第一页出现识别后第二页的表格就没了头。maintainFormat会把上一页输出的 Markdown 作为上下文一起发给下一页的请求让模型在整个文档里保持同一套表格结构。const result await zerox({ filePath: financial-report.pdf, maintainFormat: true, });它会让页面串行处理、速度变慢所以只建议表格多、常跨页的文档开启。结构化字段提取直接拿到键值对很多时候不需要全文只要发票号、金额这类字段。extractOnly: true配合一个 JSON Schema就能让模型只抽取定义的字段返回结构化数据。const result await zerox({ filePath: invoice.pdf, extractOnly: true, schema: { type: object, properties: { invoiceNo: { type: string }, total: { type: number } }, }, });适合批量处理发票、合同并落库入库省掉二次解析环节。页面级容错单页失败不毁掉整份文档多页文档里某一页请求超时或识别失败不必整份重来。errorMode决定出错时抛出异常还是忽略继续maxRetries控制失败页面重试几次。import { ErrorMode } from zerox; const result await zerox({ filePath: long-report.pdf, errorMode: ErrorMode.IGNORE, maxRetries: 2, });无人值守的批处理管道里这个组合能让输出保持稳定失败页码也会体现在 summary 里方便事后排查。Node.js 和 Python、模型提供商怎么选Zerox 提供两套 SDK功能有重叠但各有侧重关键差异如下表维度Node.jszeroxPythonpy-zerox安装npm install zeroxpip install py-zerox系统依赖graphicsmagickpoppler模型接入内置 OpenAI / Azure / Bedrock / Gemini 四家经 LiteLLM 接入提供商更多含 Vertex AI、Anthropic结构化提取schema支持不支持按页提取extractPerPage支持不支持自定义 system prompt不支持支持并发、格式保持、页面选择均支持均支持模型方面两者都能用 GPT-4o 系列、Claude 3 系列和 Gemini 1.5/2.0 系列改modelProvider和model两个参数即可切换。结构化提取需求多、用 TypeScript 的团队选 Node.js模型接入代码见 node-zerox/src/models/要接更多提供商或自定义提示词Python 侧更灵活可看 py_zerox/。concurrency 与 maintainFormat 参数怎么调并发数处理几十页的长文档时逐页等模型响应会很慢把concurrency从默认 10 调高到 15 左右让多页并行识别整体耗时随之下降但别拉太高否则会撞上模型服务的限流。格式保持文档里表格频繁跨页时开启maintainFormat输出的表格结构前后一致代价是请求从并行变为串行处理时间明显变长纯文字为主的文档就没必要开。写在最后Zerox 解决的是文档内容以可用形式进入 AI这一步省掉自己写格式转换和版面处理的活。可以先拿手边一份 PDF 跑通快速上手那段的例子看到输出后再根据文档特点决定要不要开结构化提取或格式保持。【免费下载链接】zeroxOCR Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考