探索 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 將在更多的領域發揮重要作用,為我們的生活和工作帶來更多的便利和創新。
