告别传统OCR?Zerox:用AI视觉模型解锁文档智能解析新姿势
还在为复杂的文档排版和表格发愁吗?还在被传统OCR的识别错误搞得头大吗?别担心,开源项目 getomni-ai/zerox 带着它的AI视觉模型来拯救你了!它就像一位拥有火眼金睛的文档解析大师,能轻松搞定各种文档,并将其转化为结构化的Markdown文本,方便后续的AI处理。
一、项目简介:Zerox是什么?
Zerox是一个开源项目,其核心目标是简化文档的OCR(光学字符识别)过程,特别是针对那些排版复杂、包含表格、图表等元素的文档。它巧妙地利用了强大的AI视觉模型(如GPT-4o),让文档解析不再是难题。简单来说,你只需提供一份文档,它便能返回一份结构清晰的Markdown文本,是否让你感到惊奇?
二、核心功能:Zerox的独门秘籍
Zerox的工作流程可以概括为以下几个步骤:
- 输入文件: 你可以给它任何类型的文档,比如PDF、DOCX、图片等,它都能接招。
- 转换为图片: Zerox会将文档转换为一系列图片,以便后续处理。
- AI视觉模型处理: 接下来,它会调用AI视觉模型(如GPT-4o)对每张图片进行分析,提取出文本内容,并将其转换为Markdown格式。
- 整合输出: 最后,Zerox会将所有页面的Markdown文本整合起来,返回给你一个完整的Markdown文档。
是不是感觉像在看魔术表演?但Zerox可不是魔术,它是实实在在的科技!
三、部署方式:Zerox的两种打开方式
Zerox提供了两种部署方式,以满足不同开发者的需求:
1. Node.js 版本
如果你是Node.js的忠实粉丝,可以通过npm安装Zerox:
npm install zerox
安装完成后,请确保你的系统安装了 graphicsmagick 和 ghostscript 这两个依赖项。在Linux系统上,你可以使用以下命令安装:
sudo apt-get update
sudo apt-get install -y graphicsmagick
2. Python 版本
如果你更喜欢Python,可以通过pip安装Zerox:
pip install py-zerox
Python版本需要安装 poppler,具体安装方法可以参考 pdf2image文档。
四、使用方式:Zerox的正确打开姿势
1. Node.js 版本
(1) 使用文件URL
import { zerox } from "zerox";
const result = await zerox({
filePath: "https://omni-demo-data.s3.amazonaws.com/test/cs101.pdf",
openaiAPIKey: process.env.OPENAI_API_KEY,
});
(2) 使用本地文件路径
import path from "path";
import { zerox } from "zerox";
const result = await zerox({
filePath: path.resolve(__dirname, "./cs101.pdf"),
openaiAPIKey: process.env.OPENAI_API_KEY,
});
(3) 可选参数
Zerox还提供了许多可选参数,你可以根据自己的需求进行配置,比如:
- cleanup: 是否在运行后清理临时图片文件。
- concurrency: 并发处理的页面数量。
- correctOrientation: 是否自动校正页面方向。
- errorMode: 错误处理模式。
- maintainFormat: 是否保持格式一致性。
- model: 使用的AI模型(如 gpt-4o-mini 或 gpt-4o)。
- onPostProcess 和 onPreProcess: 页面处理前后的回调函数。
- outputDir: 输出Markdown文件的目录。
- pagesToConvertAsImages: 需要转换为图片的页面。
- tempDir: 临时文件目录。
- trimEdges: 是否裁剪边缘。
2. Python 版本
from pyzerox import zerox
import os
import asyncio
# ... (模型配置部分,请参考原文)
async def main():
file_path = "https://omni-demo-data.s3.amazonaws.com/test/cs101.pdf"
output_dir = "./output_test"
result = await zerox(file_path=file_path, model=model, output_dir=output_dir, **kwargs)
return result
result = asyncio.run(main())
print(result)
Python版本的使用方式与Node.js版本类似,也提供了许多可选参数,比如:
- cleanup: 是否清理临时文件。
- concurrency: 并发进程数。
- file_path: 文件路径。
- maintain_format: 是否保持格式。
- model: 使用的AI模型。
- output_dir: 输出目录。
- temp_dir: 临时文件目录。
- custom_system_prompt: 自定义系统提示词。
- select_pages: 选择处理的页面。
- kwargs: 传递给 litellm.completion 的额外参数。
五、支持的文件类型
Zerox支持多种文件类型,包括:
- DOC/DOCX
- ODT/OTT
- RTF
- TXT
- HTML/HTM
- XML
- WPS/WPD
- XLS/XLSX
- ODS/OTS
- CSV/TSV
- PPT/PPTX
- ODP/OTP
基本上,你日常工作中遇到的文档类型,Zerox都能轻松应对。
六、总结
Zerox是一个功能强大、易于使用的开源OCR项目,它利用AI视觉模型,为文档解析带来了全新的解决方案。无论你是Node.js开发者还是Python爱好者,都可以轻松上手,让文档处理变得更加高效。如果你还在为文档解析而烦恼,不妨试试Zerox,它可能会给你带来意想不到的惊喜!
友情提示: Zerox的背后功臣是 Litellm,它为Python SDK提供了强大的AI模型支持。
最后,别忘了Zerox是MIT开源协议的,你可以放心大胆地使用它!