LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略

LLMs之OCR:llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略

目录

llm_aided_ocr的简介

1、特性

2、详细技术概览

PDF处理和OCR

PDF到图像转换

OCR处理

文本处理流程

分块创建

错误校正与格式化

重复内容移除

标题和页码抑制(可选)

LLM集成

灵活的LLM支持

本地LLM处理

基于API的LLM处理

异步处理

令牌管理

令牌估计

动态令牌调整

质量评估

日志记录与错误处理

3、配置与定制

4、输出与文件处理

llm_aided_ocr的安装和使用方法

1、安装

环境需求

安装

[安装Pyenv和Python 3.12(如果需要):](#安装Pyenv和Python 3.12(如果需要):)

设置项目:

[安装Tesseract OCR引擎(如果尚未安装):](#安装Tesseract OCR引擎(如果尚未安装):)

在.env文件中设置您的环境变量:

2、使用

3、工作原理

4、代码优化

5、配置

6、输出文件

7、限制与未来改进

llm_aided_ocr的案例应用

1、示例输出


llm_aided_ocr的简介

2024年8月,LLM辅助OCR项目是一个先进的系统,旨在显著提高光学字符识别(OCR)输出的质量。通过利用尖端的自然语言处理技术和大型语言模型(LLMs),该项目将原始OCR文本转换为高度准确、格式良好且可读性强的文档。

GitHub地址GitHub - Dicklesworthstone/llm_aided_ocr: Enhance Tesseract OCR output for scanned PDFs by applying Large Language Model (LLM) corrections.

1、特性

>> PDF到图像的转换

>> 使用Tesseract进行OCR

>> 使用LLM(本地或基于API)进行高级错误校正

>> 智能文本分块以提高处理效率

>> 可选的Markdown格式化选项

>> 标题和页码抑制(可选)

>> 最终输出的质量评估

>> 支持本地LLM和基于云的API提供商(OpenAI, Anthropic)

>> 异步处理以提高性能

>> 详细的日志记录用于过程跟踪和调试

>> GPU加速本地LLM推理

2、详细技术概览

PDF处理和OCR

PDF到图像转换

功能:convert_pdf_to_images()

使用pdf2image库将PDF页面转换为图像

支持使用max_pages和skip_first_n_pages参数处理页面子集

OCR处理

功能:ocr_image()

利用pytesseract进行文本提取

包含预处理图像的preprocess_image()函数:

将图像转换为灰度

使用Otsu方法应用二值阈值

执行膨胀以增强文本清晰度

文本处理流程

分块创建

process_document()函数将全文拆分为可管理的块

使用句子边界进行自然分割

实现块之间的重叠以保持上下文

错误校正与格式化

核心功能:process_chunk()

两步骤过程:a. OCR校正:

使用LLM修复由OCR引起的错误

维护原始结构和内容 b. Markdown格式化(可选):

将文本转换为适当的Markdown格式

处理标题、列表、强调等

重复内容移除

在Markdown格式化步骤中实现

识别并移除完全相同或近乎相同的重复段落

保留独特内容并确保文本流畅

标题和页码抑制(可选)

可配置以移除或以不同格式显示标题、页脚和页码

LLM集成

灵活的LLM支持

支持本地LLM和基于云的API提供商(OpenAI, Anthropic)

通过环境变量配置

本地LLM处理

功能:generate_completion_from_local_llm()

使用llama_cpp库进行本地LLM推理

支持自定义语法以获得结构化输出

基于API的LLM处理

功能:generate_completion_from_claude() 和 generate_completion_from_openai()

实现了适当的错误处理和重试逻辑

管理令牌限制并动态调整请求大小

异步处理

使用asyncio并发处理基于API的LLM时的块

保持处理块的顺序以保证最终输出的一致性

令牌管理

令牌估计

功能:estimate_tokens()

在可用时使用特定于模型的分词器

回退到approximate_tokens()进行快速估计

动态令牌调整

根据提示长度和模型限制调整max_tokens参数

实现TOKEN_BUFFER和TOKEN_CUSHION以安全地管理令牌

质量评估

输出质量评估

功能:assess_output_quality()

比较原始OCR文本与处理后的输出

使用LLM提供质量评分和解释

日志记录与错误处理

代码库中的全面日志记录

详细的错误消息和堆栈跟踪用于调试

抑制HTTP请求日志以减少噪音

3、配置与定制

项目使用.env文件进行轻松配置。关键设置包括:

LLM选择(本地或基于API)

API提供商选择

不同提供商的模型选择

令牌限制和缓冲区大小

Markdown格式化选项

4、输出与文件处理

原始OCR输出:保存为{base_name}__raw_ocr_output.txt

LLM校正后的输出:保存为{base_name}_llm_corrected.md 或 .txt

脚本生成整个过程的详细日志,包括时间信息和质量评估。

llm_aided_ocr的安装和使用方法

1、安装

环境需求

Python 3.12+

Tesseract OCR引擎

PDF2Image库

PyTesseract

OpenAI API(可选)

Anthropic API(可选)

本地LLM支持(可选,需要兼容的GGUF模型)

安装

安装Pyenv和Python 3.12(如果需要):

如果需要安装Pyenv和python 3.12,并使用它来创建虚拟环境

设置项目:

使用pyenv创建虚拟环境:

安装Tesseract OCR引擎(如果尚未安装):

对于Ubuntu: sudo apt-get install tesseract-ocr

对于macOS: brew install tesseract

对于Windows: 从GitHub下载并安装

在.env文件中设置您的环境变量:

2、使用

将您的PDF文件放置在项目目录中。

更新main()函数中的input_pdf_file_path变量,使用您的PDF文件名。

运行脚本:

python llm_aided_ocr.py

脚本将生成多个输出文件,包括最终后处理的文本。

3、工作原理

LLM辅助OCR项目采用多步骤过程将原始OCR输出转换为高质量、易读的文本:

PDF转换:使用pdf2image将输入PDF转换为图像。

OCR:应用Tesseract OCR从图像中提取文本。

文本分块:将原始OCR输出拆分为可管理的块以便处理。

错误校正:每个块都经过LLM处理,以纠正OCR错误并提高可读性。

Markdown格式化(可选):将校正后的文本重新格式化为干净一致的Markdown。

质量评估:基于LLM的评估比较最终输出质量与原始OCR文本。

4、代码优化

并发处理:当使用基于API的模型时,块被并发处理以提高速度。

上下文保留:每个块都包含与前一个块的小部分重叠以维持上下文。

自适应令牌管理:系统根据输入大小和模型约束动态调整LLM请求使用的令牌数量。

5、配置

项目使用.env文件进行配置。关键设置包括:

USE_LOCAL_LLM:设为True以使用本地LLM,False则使用基于API的LLM。

API_PROVIDER:在"OPENAI"或"CLAUDE"之间选择。

OPENAI_API_KEY, ANTHROPIC_API_KEY:各自服务的API密钥。

CLAUDE_MODEL_STRING, OPENAI_COMPLETION_MODEL:指定每个提供商使用的模型。

LOCAL_LLM_CONTEXT_SIZE_IN_TOKENS:设置本地LLM的上下文大小。

6、输出文件

脚本生成多个输出文件:

{base_name}__raw_ocr_output.txt:来自Tesseract的原始OCR输出。

{base_name}_llm_corrected.md:最终LLM校正并格式化的文本。

7、限制与未来改进

系统性能严重依赖所使用的LLM的质量。

处理非常大的文档可能耗时较长,可能需要大量的计算资源。

llm_aided_ocr的案例应用

1、示例输出

要查看LLM辅助OCR项目可以做什么,请参阅这些示例输出:

相关推荐
代码AI弗森10 小时前
PDF OCR + 大模型:让文档理解不止停留在识字
pdf·ocr
Struart_R1 天前
SpatialVLM和SpatialRGPT论文解读
计算机视觉·语言模型·transformer·大语言模型·vlm·视觉理解·空间推理
努力还债的学术吗喽1 天前
2020 GPT3 原文 Language Models are Few-Shot Learners 精选注解
gpt·大模型·llm·gpt-3·大语言模型·few-shot·zero-shot
AI人工智能+2 天前
应用银行卡识别技术,构建更安全、便捷的数字身份认证与支付生态
人工智能·ocr·银行卡识别
deephub3 天前
Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
人工智能·深度学习·神经网络·ocr
ccut 第一混4 天前
c#联合Halcon进行OCR字符识别(含halcon-25.05 百度网盘)
c#·ocr·halcon
HyperAI超神经5 天前
【vLLM 学习】Load Sharded State
llm·大语言模型·内存管理·vllm·推理加速·kv 缓存·中文文档
星夜Zn6 天前
Nature论文-预测和捕捉人类认知的基础模型-用大模型模拟人类认知
论文阅读·人工智能·大语言模型·nature·认知建模·统一认知模型
R-G-B6 天前
【04】OpenCV C++实战篇——实战:发票精准定位,提取指定单元格数据。(倾角计算、旋转矫正、产品定位、目标定位、OCR文字提取)
c++·opencv·ocr·发票精准定位·提取指定单元格数据·倾角计算·旋转矫正
EkihzniY7 天前
单层 PDF 与双层 PDF:一字之差,功能大不同
pdf·ocr