资讯动态

3 行代码把 PDF 变成可编辑 Markdown:视觉 OCR 文档提取工具 Zerox 实战

发布时间:2026/9/14 5:18:31 来源:尧图企业网站定制
3 行代码把 PDF 变成可编辑 Markdown视觉 OCR 文档提取工具 Zerox 实战【免费下载链接】zeroxOCR Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox周五下午三点财务把 200 张扫描发票丢进群里要求下班前出汇总表。我用 Zerox 跑了一遍 OCR 文档提取每张发票先变成 Markdown关键字段再用 schema 直接落表准点下班。这个工具的核心就是把文档图像转成可编辑的 Markdown。功能全景OCR 文档提取能力矩阵维度情况输入格式PDF、DOC/DOCX、XLS/XLSX、PPT/PPTX、HTML、TXT、图片、HEIC 等 23 种语言版本Node.jszerox与 Pythonpy-zerox都是异步 API模型提供商OpenAI、Azure OpenAI、AWS Bedrock、Google GeminiPython 版经 LiteLLM 另支持 Vertex AI关键参数concurrency并发、maintainFormat跨页格式保持、schema结构化提取、extractPerPage按页字段它的思路是把解析文本换成看图任意格式先统一成 PDF逐页渲染成图每张图交给视觉模型输出该页 Markdown最后拼回一份完整文档。模型一次性看到版式、表格和图乱排版的文件也不容易崩。先跑起来3 行代码出 Markdownnpm install zeroximport { zerox } from zerox; const result await zerox({ filePath: invoice.pdf, credentials: { apiKey: process.env.OPENAI_API_KEY }, });Linux 上要先apt-get install -y graphicsmagick页渲染依赖它。跑通后返回一个对象pages每页一项content是该页 Markdown附带 token 数与耗时。单页发票的content里能看到完整的明细表和金额栏。它怎么做到准确三个机制跨页表格识别怎么拼问题表头在第 2 页、行在第 3 页逐页独立处理时列会对不上。方案maintainFormat: true切到串行处理处理第 N 页时把上一页的 Markdown 输出作为上下文一起传入模型照着对齐。效果跨页表格的列数和表头保持一致。const result await zerox({ filePath: annual-report.pdf, maintainFormat: true, // 串行处理带上页输出做上下文 });代价是失去并发所以它默认是关的。Schema 结构化提取怎么约束输出问题要入库的数据模型却吐一坨 Markdown还得自己正则。方案传入 JSON Schema 并设extractOnly: trueextractPerPage列出的字段按页各发一次请求其余字段整文一次结果自动合并进extracted。效果拿到带页码和取值的结构化对象不用再解析文本。const result await zerox({ filePath: invoices.pdf, extractOnly: true, schema: { properties: { invoiceNumber: { type: string } } }, extractPerPage: [invoiceNumber], });并发怎么控流问题百页文档一次性打满接口限流先崩。方案内部用 pLimit 排队concurrency控制同时在跑的请求数失败单页重试一次后标ERROR整份文档不中断。效果默认 10 并发20 页的财报大约 1 分钟跑完。const result await zerox({ filePath: manual.pdf, concurrency: 5, errorMode: ErrorMode.IGNORE, });选型与踩坑并发 OCR 配置和模型怎么选组合适合场景代价gpt-4o-mini concurrency 10手册、合同等大批量纯文字最便宜复杂表格准确率下降gpt-4o maintainFormat财务报表、跨页表格多的报告串行处理比并发慢三到四成token 翻倍每次带上页内容Bedrock Claude 3.5 Sonnet数据必须留在企业边界内多一套账号与权限配置两个我踩过的坑把concurrency拉到 30 想提速OpenAI 大面积 429默认maxRetries: 120 页里 7 页被标 ERROR。解法降回 5~10再大批量就用pagesToConvertAsImages分批。200 页扫描 PDF300 DPI 下每页渲成三四 MB 的 PNG临时目录吃掉近 700MB。解法调低imageDensitytempDir指向剩余空间大的磁盘跑完确认cleanup生效。落地参考三个真实用法财务票据落表。老板要 200 张发票的编号和金额一个 schema 搞定const r await zerox({ filePath: invoices.pdf, extractOnly: true, schema }); console.log(r.extracted.invoiceNumber); // 形如 [{ page, value }, ...]技术手册批量转 MD。outputDir指向一个目录跑完得到同名 .md直接丢进网站源码树const r await zerox({ filePath: manual.pdf, outputDir: ./md-out });合同关键字段抽取。金额、期限、续签条款三个字段走extractPerPage逐页各问一次避免长文档整文请求超上下文const r await zerox({ filePath: contract.pdf, schema, extractPerPage: [amount, term] });什么时候用它什么时候不用文档的价值在版式——表格、表单、报表——Zerox 的视觉路线比抽文本层更稳。文件本身就是电子版 PDF、文字可选时直接读文本层别花视觉模型的 token。只要个大概草稿的流水线小参数低成本模型即可。完整参数表和更多示例见 README.md 与 Node 版实现 node-zerox/src/。【免费下载链接】zeroxOCR Document Extraction using vision models项目地址: https://gitcode.com/GitHub_Trending/ze/zerox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价