Zerox是一个简单而强大的OCR(光学字符识别)工具,专为AI文档处理而设计。
它由Getomni.ai开发,采用现代化的方法解决了文档处理中的一个基本问题:文档本质上是为人类视觉设计的,而AI系统需要以结构化方式访问其中的信息。
Zerox的核心逻辑简洁明了:将各种格式的文档(如PDF、Word、图片等)转换为一系列图像,利用先进的AI视觉模型从这些图像中提取文本并转换为Markdown或结构化数据格式。
主要特点
-
多格式支持:可处理多种文档格式,包括PDF、Word文档、Excel表格、PowerPoint演示文稿、HTML、XML和各种文本格式等。
-
多平台AI模型集成:Zerox支持多种AI视觉模型,包括OpenAI(GPT-4、GPT-4 Vision等)、Azure OpenAI、AWS Bedrock(支持Claude 3系列模型)、Google Gemini以及Vertex AI(仅Python版本支持)。
-
高级数据提取:Zerox提供丰富的数据提取功能,支持通过schema进行结构化数据提取,允许逐页数据提取,并能够在处理过程中保持文档的原始格式和结构。
-
性能优化:为提高处理效率,Zerox实现了多种性能优化措施,包括并发处理功能,支持异步API调用,提供临时文件管理功能,以及灵活的错误处理模式。
免费在线实用
网页地址:https://getomni.ai/ocr-demo
工作原理
- 用户只需上传文件,Zerox 会将其转换为一系列图像。
- 每个图像会被传递给 GPT 模型,生成相应的 Markdown 文本。
- Zerox 会汇总所有响应,返回完整的 Markdown 文档。
安装方法
Node.js版本
npm install zerox
# 依赖(需手动安装)
sudo apt-get install graphicsmagick ghostscript # Linux示例
Python版本
pip install py-zerox
# 依赖(需手动安装poppler)
# macOS: brew install poppler
# Linux: sudo apt-get install poppler-utils
使用方法
Node.js示例
从URL加载文件:
import { zerox } from "zerox";
const result = await zerox({
filePath: "https://omni-demo-data.s3.amazonaws.com/test/cs101.pdf",
credentials: {
apiKey: process.env.OPENAI_API_KEY,
}
});
从本地路径加载:
import { zerox } from "zerox";
import path from "path";
const result = await zerox({
filePath: path.resolve(__dirname, "./cs101.pdf"),
credentials: {
apiKey: process.env.OPENAI_API_KEY,
},
});
Python示例
from zerox import zerox
import asyncio
# 使用OpenAI模型
ai_provider = "openai" # 仅使用vision模型!参考: https://docs.litellm.ai/docs/providers
my_api_key = "..."
# 异步调用
result = await zerox(
"./path/to/file.pdf",
model="gpt-4-vision-preview",
api_key=my_api_key
)
主要参数配置
- filePath:要处理的文件路径或URL(必需)
- credentials:AI提供商的API密钥(必需)
- cleanup:处理后是否清理临时文件(默认:true)
- concurrency:并发处理的页面数量(默认:10)
- correctOrientation:是否尝试识别和纠正页面方向(默认:true)
- extractOnly:是否仅提取结构化数据(默认:false)
- imageDensity:图像转换的DPI(默认:300)
- maintainFormat:是否保持一致的格式(默认:false)
- model:使用的AI模型(支持多种提供商的不同模型)
- tempDir:临时文件存储目录
数据提取功能
Zerox支持从文档中提取结构化数据,特别适合处理发票、收据等包含关键信息的文档。通过提供schema,用户可以指定要提取的特定信息,使其符合JSON Schema标准。
以下是提取数据的示例输出:
{
"completionTime": 10030,
"filename": "invoice_36258",
"pagesTimes": 10050,
"pages": [
{
"page": 1,
"contents": "# INVOICE # 36258\n\n*wDate*: Mar 08 2012 \n\n*wClient*: First Class \n\n*wShipping Cost*: $38.18 \n\n...",
"contentLength": 707
}
],
"extracted": null,
"summary": {
"totalPages": 1,
"ocr": 0,
"failed": 0,
"successful": 1
},
"extractions": null
}
支持的文件类型
- 文档格式:PDF、DOC、DOCX、ODT、RTF、TXT等
- 表格格式:XLS、XLSX、ODS、CSV、TSV等
- 演示文稿:PPT、PPTX、ODP等
- 网页格式:HTML、HTM、XML等
- 其他格式:WPS、WPD等
总结
Zerox为文档OCR和AI处理提供了一个简单而强大的解决方案,特别适合开发者将各种文档转换为AI可处理的格式。通过支持多种文件格式和AI模型,以及提供Node.js和Python两个版本的实现,Zerox满足了不同开发环境和应用场景的需求。
对于需要处理大量文档并提取结构化数据的项目,Zerox提供了一种高效且灵活的方法,减少了文档处理的复杂性,同时充分利用了现代AI视觉模型的强大能力。
想要了解更多或尝试Zerox,可以访问项目的在线演示(https://getomni.ai/ocr-demo)或查阅完整文档(https://docs.getomni.ai/zerox)。
更多资料获取
📚 个人网站:ipengtao.com
如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。