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

发布时间:2026/9/14 5:18:39

3 行代码把 PDF 变成可编辑 Markdown:视觉 OCR 文档提取工具 Zerox 实战 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),仅供参考
延伸阅读

更多相关文章

2026/9/14 5:18:39

网络安全就业“离谱”背后:岗位、技能与求职全解析

不知道你们最近刷招聘软件是什么感受,我今年光是后台私信和社群里面聊到的网络安全就业问题,就比前两三年加起来还多。“离谱”这个词,已经不只是夸张,而是很多人共同的情绪:岗位数量看着不算少,简历投出去…

2026/9/14 5:18:39

JSP医疗系统如何用链式哈希实现防篡改数据模型

简介:一套基于JSPJava技术的医疗数据管理系统源码,面向Java Web开发者与健康医疗领域的课程设计、毕业设计人群。系统采用B/S模式,整合区块链数据模型用于医疗数据的安全管理,可在Tomcat7.0、Myeclipse8.5环境下搭配MySQL数据库运…

2026/9/14 6:08:42

Vue3核心特性与性能优化实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 6:08:42

阿里开源Agent框架实战:让大模型从对话到执行任务

1. 这个开源Agent项目,凭什么被叫做"神级" 先说结论:阿里开源的这套Agent项目,不是那种套壳的"聊天机器人几个插件"的玩具,而是一个真正把大模型从"会聊天"推向"会干活"的工程化框架。我…

2026/9/14 6:08:42

工业质检中的YOLO与大模型协同实践

1. 项目本质与真实定位:这不是“YOLO全家桶”,而是一次面向工业质检场景的务实技术选型实践 看到标题里一连串“YOLOv8/v10/v11/v12/YOLO26”,第一反应不是兴奋,而是皱眉——这根本不是在堆砌版本号,而是暴露了一个非常…

2026/9/14 6:08:41

专业金融API接入实战:Python构建高可靠全市场行情管道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码