探索 Zerox OCR:创新引领光学字符识别新境界

发布于 2024-11-8 15:37
浏览
0收藏
在数字化信息飞速发展的当今时代,光学字符识别(OCR)技术成为了连接纸质与数字世界的重要桥梁。它能够将各种文档中的文字快速准确地转换为可编辑的电子文本,极大地提高了工作效率和信息利用价值。在众多 OCR 工具中,Zerox OCR 以其独特的特性和优势脱颖而出,为用户带来了全新的体验和更高的效率。本文将深入探讨 Zerox OCR 的相关内容,包括其原理、特点、应用场景等。

一、Zerox OCR 的基本原理

Zerox OCR 的核心原理是利用先进的技术手段对图像中的文字进行识别和提取。它不完全依赖传统的光学字符识别技术,而是巧妙地结合了大型语言模型。在处理过程中,当面对输入的文档,如 PDF、图片或 DOCX 等格式的文件时,首先会对文档进行预处理。对于 PDF 文件,会将其转换为图像,以便后续分析每一页的内容。然后,利用大型语言模型的强大理解能力,对图像中的文字进行解读和识别。这种方式使得 Zerox OCR 能够更好地处理各种复杂的文本情况,包括风格化程度很高的文本、布局不寻常的文档以及包含特殊符号或图形的文本内容等。与传统 OCR 技术相比,它更注重对文本语义的理解,从而提高了识别的准确性和可靠性。

二、Zerox OCR 的特点与优势

1. 高效准确的识别能力

借助大型语言模型的优势,Zerox OCR 能够对复杂的文本进行精准识别。无论是手写体、艺术字还是带有各种干扰因素的文字,它都能准确地提取其中的信息,大大减少了错误识别的概率,为用户提供高质量的识别结果。

2. 广泛的文件格式支持

支持多种常见的文件格式,如 PDF、DOCX、图片(包括常见的图片格式如 JPEG、PNG 等)。这使得用户在不同的场景下都能方便地使用 Zerox OCR,无需进行繁琐的格式转换,节省了时间和精力。

3. 零-shot 学习能力

具备强大的零-shot OCR 处理能力意味着它无需针对特定任务进行大量的预先训练数据准备,就可以直接对各种文档进行处理。这种灵活性和适应性使得 Zerox OCR 能够快速应对不同类型的文档和任务,为用户提供了便捷的使用体验。

4. 友好的输出格式

处理后的文本以 Markdown 格式返回。Markdown 格式简洁明了,既保留了文本的基本格式,又便于后续的编辑和使用。用户可以轻松地对输出的文本进行进一步的整理、分析和排版,满足不同的需求。

5. 易于集成

提供了方便的开发接口,特别是对于开发者来说,它提供了 Node.js 和 Python 的 SDK。这使得开发者能够轻松地将 Zerox OCR 集成到现有的应用程序中,扩展应用的功能,实现自动化的 OCR 处理,提高工作效率和流程的自动化程度。

6. 并发处理与自定义选项

支持并发处理多个页面,用户可以根据自己的需求设置同时处理的页面数量,从而加快整体的处理速度。同时,还提供了多种自定义选项,例如选择处理特定页面、是否保持格式以及选择使用的模型等,用户可以根据具体的任务和需求进行个性化的配置,满足不同场景下的特殊要求。

7. 清理功能

在处理完成后,支持自动清理临时生成的图像文件,避免了不必要的文件占用和存储问题,简化了用户的文件管理工作,保持系统的整洁和高效。

三、Zerox OCR 的应用场景

1. 文档数字化与档案管理

在图书馆、档案馆、企业文档管理等领域,有大量的纸质文档需要进行数字化处理。Zerox OCR 可以快速将这些纸质文件转换为电子文本,方便存储、检索和编辑。例如,图书馆可以将珍贵的古籍文献进行 OCR 处理后,建立数字化图书馆,方便读者查阅和研究;企业可以将历史档案文件数字化,提高档案管理的效率和安全性。

2. 数据提取与分析

从各种报表、合同、发票等文档中提取关键信息是企业日常运营中的重要任务。Zerox OCR 能够准确地识别和提取这些文档中的数据,为数据分析和决策提供支持。例如,财务部门可以利用它从财务报表中提取数据进行分析,销售部门可以从销售合同中提取关键条款进行业务分析和跟进。

3. 内容创作与编辑

对于作者、编辑等从事文字工作的人员,Zerox OCR 可以将手写笔记、图片中的文字等转换为电子文本,方便进行进一步的创作和编辑。例如,作家可以将手写的草稿通过 Zerox OCR 转换为电子文档,然后进行修改和完善;编辑可以将扫描的稿件快速转换为可编辑的文本,提高工作效率。

4. 教育领域

在教育领域,教师可以利用 Zerox OCR 将教材、试卷等资料中的文字转换为电子文本,方便制作教学课件、进行在线教学和作业批改。学生也可以使用它将笔记、书籍中的重点内容转换为电子文档,便于复习和整理知识。

5. 电子商务与物流

在电子商务中,商家可以使用 Zerox OCR 处理订单、发票等文件,提高订单处理的效率和准确性。在物流领域,快递单号、地址等信息的识别和录入也可以借助 Zerox OCR 实现自动化,减少人工输入的错误和工作量。

四、快速开始

1、在线体验

在线地址:​​https://getomni.ai/ocr-demo​

2、本地使用

1)安装 py-zerox

pip install py-zerox

2)代码示例

from pyzerox import zerox
import os
import json
import asyncio


### Model Setup (Use only Vision Models) Refer: https://docs.litellm.ai/docs/providers ###


## placeholder for additional model kwargs which might be required for some models
kwargs = {}


## system prompt to use for the vision model
custom_system_prompt = None


# to override
# custom_system_prompt = "For the below pdf page, do something..something..." ## example


###################### Example for OpenAI ######################
model = "gpt-4o-mini" ## openai model
os.environ["OPENAI_API_KEY"] = "" ## your-api-key




###################### Example for Azure OpenAI ######################
model = "azure/gpt-4o-mini" ## "azure/<your_deployment_name>" -> format <provider>/<model>
os.environ["AZURE_API_KEY"] = "" # "your-azure-api-key"
os.environ["AZURE_API_BASE"] = "" # "https://example-endpoint.openai.azure.com"
os.environ["AZURE_API_VERSION"] = "" # "2023-05-15"




###################### Example for Gemini ######################
model = "gemini/gpt-4o-mini" ## "gemini/<gemini_model>" -> format <provider>/<model>
os.environ['GEMINI_API_KEY'] = "" # your-gemini-api-key




###################### Example for Anthropic ######################
model="claude-3-opus-20240229"
os.environ["ANTHROPIC_API_KEY"] = "" # your-anthropic-api-key


###################### Vertex ai ######################
model = "vertex_ai/gemini-1.5-flash-001" ## "vertex_ai/<model_name>" -> format <provider>/<model>
## GET CREDENTIALS
## RUN ##
# !gcloud auth application-default login - run this to add vertex credentials to your env
## OR ##
file_path = 'path/to/vertex_ai_service_account.json'


# Load the JSON file
with open(file_path, 'r') as file:
    vertex_credentials = json.load(file)


# Convert to JSON string
vertex_credentials_json = json.dumps(vertex_credentials)


vertex_credentials=vertex_credentials_json


## extra args
kwargs = {"vertex_credentials": vertex_credentials}


###################### For other providers refer: https://docs.litellm.ai/docs/providers ######################


# Define main async entrypoint
async def main():
    file_path = "https://omni-demo-data.s3.amazonaws.com/test/cs101.pdf" ## local filepath and file URL supported


    ## process only some pages or all
    select_pages = None ## None for all, but could be int or list(int) page numbers (1 indexed)


    output_dir = "./output_test" ## directory to save the consolidated markdown file
    result = await zerox(file_path=file_path, model=model, output_dir=output_dir,
                        custom_system_prompt=custom_system_prompt,select_pages=select_pages, kwargs)
    return result




# run the main function:
result = asyncio.run(main())


# print markdown result
print(result)

参数说明:

async def zerox(
    cleanup: bool = True,
    concurrency: int = 10,
    file_path: Optional[str] = "",
    maintain_format: bool = False,
    model: str = "gpt-4o-mini",
    output_dir: Optional[str] = None,
    temp_dir: Optional[str] = None,
    custom_system_prompt: Optional[str] = None,
    select_pages: Optional[Union[int, Iterable[int]]] = None,
    kwargs
) -> ZeroxOutput:
  ...
  • cleanup(bool,可选):处理后是否清理临时文件。默认为 True。
  • concurrency(int,可选):要运行的并发进程数。默认为 10。
  • file_path(Optional[str],可选):要处理的 PDF 文件的路径。默认为空字符串。
  • keep_format(bool, 可选):是否保留上一页的格式。默认为 False。
  • model(str,可选):用于生成补全的模型。默认为“gpt-4o-mini”。请参阅 LiteLLM 提供程序以获取正确的模型名称,因为它可能因提供程序而异。
  • output_dir(Optional[str], 可选): 保存 markdown 输出的目录。默认为 None。
  • temp_dir(str,可选):存储临时文件的目录,默认为系统临时目录中的某个命名文件夹。如果已经存在,则在 zerox 使用它之前将删除其内容。
  • custom_system_prompt(str,可选):模型使用的系统提示,它将覆盖 zerox 的默认系统提示。一般情况下,除非您想要某些特定行为,否则不需要它。设置后,它将发出友好警告。默认为 None。
  • select_pages(Optional[Union[int, Iterable[int]]],可选):要处理的页面,可以是单个页码或可迭代的页码,默认为 None
  • kwargs(字典,可选):传递给 litellm.completion 方法的附加关键字参数。有关详细信息,请参阅 LiteLLM 文档和完成输入。

返回

  • ZeroxOutput:包含模型生成的 markdown 内容以及一些元数据(参见下文)。

五、结语

Zerox OCR 作为一款创新的光学字符识别工具,以其独特的原理、丰富的特点和广泛的应用场景,为用户在数字化时代处理文字信息提供了强大的支持。它的出现不仅提高了 OCR 技术的效率和准确性,还为各个行业的数字化转型和发展带来了新的机遇。如果你对 Zerox OCR 感兴趣,想要了解更多详细信息,可以访问其官方 GitHub 地址:​​​https://github.com/getomni-ai/zerox​​。相信在未来,随着技术的不断进步和完善,Zerox OCR 将在更多的领域发挥重要作用,为我们的生活和工作带来更多的便利和创新。

本文转载自​小兵的AI视界​,作者: 小兵 ​​

收藏
回复
举报
回复
相关推荐