
llm_aided_ocr
用 LLM 把扫描 PDF 变成干净 Markdown,识别更准、格式更规整。
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 3010
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- Python 3.12(README 要求用 pyenv 安装该版本)
- pyenv(用于安装和管理 Python 3.12)
- Tesseract OCR 引擎(项目 OCR 能力依赖它)
- OpenAI 或 Anthropic 的 API Key(使用 API 模式时),或本地可运行的 LLM
- 可选 GPU(README 提到本地 LLM 推理可用 GPU 加速)
安装与启动步骤
-
1安装 pyenv 与 Python
按 README 提供的脚本安装 pyenv 所需的编译依赖、克隆 pyenv 并写入 zsh 配置,然后安装 Python 3.12。
if ! command -v pyenv &> /dev/null; then sudo apt-get update sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init --path)"' >> ~/.zshrc source ~/.zshrc fi cd ~/.pyenv && git pull && cd - pyenv install 3.12 -
2准备项目环境
README 第2步“Set up the project”的代码在节选中缺失,请对照仓库 README 完成依赖安装,并切换到 Python 3.12 环境。
-
3配置 .env
在项目中使用 .env 文件配置 LLM 选择、API 提供商、模型、Token 上限与 Markdown 输出等选项。
-
4放入 PDF 并改路径
把待处理 PDF 放在项目目录,并修改 main() 函数中的 input_pdf_file_path 变量为你的文件名。
-
5运行主脚本
执行主脚本开始 PDF 转图片、Tesseract OCR、LLM 纠错与 Markdown 格式化流程。
python llm_aided_ocr.py
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
USE_LOCAL_LLM | 是 | True 使用本地 LLM,False 使用 API 方式的 LLM | False |
API_PROVIDER | 是 | 选择 API 提供商,可选 OPENAI 或 CLAUDE | OPENAI |
OPENAI_API_KEY | 否 | 使用 OpenAI API 时需要的密钥 | sk-xxxxxxxxxxxxxxxx |
ANTHROPIC_API_KEY | 否 | 使用 Anthropic(Claude)API 时需要的密钥 | sk-ant-xxxxxxxx |
OPENAI_COMPLETION_MODEL | 否 | 指定 OpenAI 侧使用的模型名称 | gpt-4o |
CLAUDE_MODEL_STRING | 否 | 指定 Claude 侧使用的模型名称 | claude-3-5-sonnet-latest |
如何确认成功
脚本跑完后项目目录会生成多个输出文件,包含最终 LLM 纠正后的 Markdown 文本,终端日志无报错。
常见问题
Q:应该用本地 LLM 还是 API?
A:在 .env 中设置 USE_LOCAL_LLM:True 走本地模型,False 则通过 API_PROVIDER 选择 OPENAI 或 CLAUDE 并填写对应 API Key。
Q:运行时提示找不到 PDF 怎么办?
A:确认 PDF 已放入项目目录,并检查 main() 里 input_pdf_file_path 变量的文件名与实际文件完全一致。
Q:长文档会超出模型上下文吗?
A:项目内置智能分块功能,会把长文本切分后再交给 LLM 处理,避免超出上下文限制。
Q:本地 LLM 推理很慢怎么办?
A:README 提到支持 GPU 加速本地 LLM 推理,也可改用 API 方式获得更快的处理速度。
注意事项
- README 第2步“Set up the project”的具体命令在节选中缺失,安装依赖前请以仓库当前 README 为准。
- .env 中含 API Key,请不要把该文件提交到公开仓库。
- 处理大量或超长 PDF 时,API 模式可能产生较高调用费用,建议先用少量页面测试。
核心亮点
- 利用 LLM 上下文纠错,显著降低 OCR 错字率,尤其对专业术语和复杂排版
- 智能分块处理长文档,突破上下文窗口限制,适合整本书级扫描件
- 输出标准 Markdown,无缝对接笔记软件、知识库和文档管线
不足之处
- 依赖外部 LLM 服务,本地模型需较高硬件配置,API 调用产生费用
- 处理速度受 LLM 推理速度影响,大批量文档转换耗时较长
- 文档/社区待观察
适用场景
- 将扫描版书籍、论文转换为可检索的 Markdown 笔记
- 批量数字化企业纸质档案,并结构化存储
- 为 OCR 结果提供智能校对,提升数据录入准确率
替代项目
Marker、Mathpix、PaddleOCR
上一篇:text-extract-api
下一篇:DeepCamera
同类项目推荐
neuriplo-infer
开源
一个 C++ 程序跑通检测分割分类光流多任务
C++ app for computer vision inference, supporting multiple tasks and backends.
dpscreenocr
开源
框选屏幕任意区域,一键提取文字到剪贴板
A program to recognize text on the screen
DTrOCR
开源
用纯解码器 Transformer 直接生成文字,简化 OCR 识别流程
A PyTorch implementation of DTrOCR: Decoder-only Transformer for Optical Character R···
docstrange
开源
从任意文档秒提取结构化数据,一键转成 JSON/CSV
Extract and convert data from any document, images, pdfs, word doc, ppt or URL into ···
GraspGPT_public
开源
从图像直接预测机器人抓取姿态,快速复现SOTA抓取模型。
code implementation of GraspGPT and FoundationGrasp
manga-image-translator
开源
一键翻译漫画图片文字,自动抹除替换,阅读无国界
Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ (no longer w···
gcd
开源
单目视频一键生成动态新视角,让相机自由飞
Generative Camera Dolly: Extreme Monocular Dynamic Novel View Synthesis (ECCV 2024 O···
awesome-industrial-anomaly-detec···
开源
一库在手,快速检索工业缺陷检测论文与数据集
Paper list and datasets for industrial image anomaly/defect detection (updating). 工···
kwiver
开源
用配置拼装视觉算法,运行时换模块不重编译
Mirror of upstream KWIVER: Pulls Together Computer Vision Algorithms into Highly-Mod···