当前位置:首页 > 技术文章 > 正文内容

Github 11.2K,这款开源工具用 AI 实现文档 OCR 自动化,支持 30 + 格式

zonemu3个月前 (07-23)技术文章27

Zerox是一个简单而强大的OCR(光学字符识别)工具,专为AI文档处理而设计。

由Getomni.ai开发,采用现代化的方法解决了文档处理中的一个基本问题:文档本质上是为人类视觉设计的,而AI系统需要以结构化方式访问其中的信息。

Zerox的核心逻辑是将各种格式的文档(如PDF、Word、图片等)转换为一系列图像,利用先进的AI视觉模型从这些图像中提取文本并转换为Markdown或结构化数据格式。

主要特点

  1. 多格式支持:可处理多种文档格式,包括PDF、Word文档、Excel表格、PowerPoint演示文稿、HTML、XML和各种文本格式等。
  2. 多平台AI模型集成:Zerox支持多种AI视觉模型,包括OpenAI(GPT-4、GPT-4 Vision等)、Azure OpenAI、AWS Bedrock(支持Claude 3系列模型)、Google Gemini以及Vertex AI(仅Python版本支持)。
  3. 高级数据提取:Zerox提供丰富的数据提取功能,支持通过schema进行结构化数据提取,允许逐页数据提取,并能够在处理过程中保持文档的原始格式和结构。
  4. 性能优化:为提高处理效率,Zerox实现了多种性能优化措施,包括并发处理功能,支持异步API调用,提供临时文件管理功能,以及灵活的错误处理模式。

免费在线实用

网页地址:https://getomni.ai/ocr-demo

工作原理

  1. 用户只需上传文件,Zerox 会将其转换为一系列图像。
  2. 每个图像会被传递给 GPT 模型,生成相应的 Markdown 文本。
  3. 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视觉模型的强大能力。

Github项目地址:https://github.com/getomni-ai/zerox

相关文章

【Vue3 基础】05.组件化(组件使用vuex)

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 a...

我常在使用的几个 VIM 插件(我常在使用的几个 vim 插件)

今天给你分享几个我觉得还不错的 VIM 插件,也许能给你带来一点「惊喜感」。vim主题插件 你完全可以让你的编辑器按照你喜欢的样子呈现,在 vimcolors 这个网站中,汇集了很多的主题,你可以进去...

我的VIM配置(如何配置vim编辑环境)

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置...

(一)熟练HTML5+CSS3,每天复习一遍

前言学习网页的概念和分类,了解静态网页和动态网页的不同;了解网页浏览器的工作原理。了解HTML,XHTML,HTML5的概念,制作简单的HTML页面的开发。什么是网页可以在internet上通过网页浏...

Web前端全套教程+视频包含JavaScript、Vue等

写在前面:web前端从入门到精通经典教程,老师精心讲,想从事编程或者数据分析行业的小伙伴点进来,只需你评论并关注私信留言“前端”。便可免费获取。WEB前端简介:WEB前端工程师,也叫Web前端开发工程...

HTML5培训的学习大纲

第一阶段前端开发基础:1.HTML标签语言(xhtml+html5)行业介绍,本地环境配置,sublime编辑器学习使用,制作html标准模板,css基础,html常用标签(一),html常用标签(二...