都有哪些网站,什么是网络社交,网站建设费属于宣传费吗,深圳做网站推广优化LLMs之OCR#xff1a;llm_aided_ocr(基于LLM辅助的OCR项目)的简介、安装和使用方法、案例应用之详细攻略 目录
llm_aided_ocr的简介
1、特性
2、详细技术概览
PDF处理和OCR
PDF到图像转换
OCR处理
文本处理流程
分块创建
错误校正与格式化
重复内容移除
标题和页码…LLMs之OCRllm_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如果需要
设置项目
安装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以使用本地LLMFalse则使用基于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项目可以做什么请参阅这些示例输出
Original PDFRaw OCR OutputLLM-Corrected Markdown Output