📄 文档列表
🎬 口播文案
✏️ 编辑文档
标题
工具栏
加粗
H2 标题
H3 标题
引用
无序列表
有序列表
代码块
📷 上传图片
点击或拖拽上传图片
支持 PNG, JPG, GIF, WebP 格式
内容 (Markdown 格式)
给 AI 发一句"帮我把这个 PDF 的文字全提取出来",它直接写代码、跑通、返回结果——这种体验以前不存在,现在 OpenCode 配合 Tesseract OCR 就能做到。 **GitHub:https://github.com/anomalyco/opencode,164,482 Stars,MIT License** **Tesseract:https://github.com/tesseract-ocr/tesseract,74,242 Stars,Apache-2.0,v5.5.2(2025-12-26)** Tesseract 是开源 OCR 领域最老牌的项目,1985 年由 HP 开发,2006 年转 Google 维护,2018 年后由社区继续开发(当前维护者 Zdenko Podobny,核心开发者 Stefan Weil)。OpenCode 是这两年增速最快的开源 AI 编程代理(v1.15.10,2026-05-23),164K Stars 已超过 Claude Code 等竞品。 这两个工具放在一起,解决的问题是:**让 AI 帮你写调用 OCR 引擎的代码,然后自动化整个文档识别流水线**。 ## 先搞清楚:Tesseract 是什么 Tesseract 5.5.2 是目前的稳定版本(2025 年 12 月更新),它是一个 C++ OCR 引擎,提供命令行工具和 libtesseract API 两层接口。 核心能力: - **支持 100+ 语言**,开箱即用,unicode UTF-8 - **多种输出格式**:纯文本、hOCR(HTML)、PDF、TSV、ALTO、 PAGE - **支持多种图片格式**:PNG、JPEG、TIFF、多页 TIFF - **支持训练**:可以针对特殊字体或语言做自定义训练 - **LSTM 神经网络引擎**(Tesseract 4 起),比传统字符模式准确率高很多 - **legacy 模式兼容**:可用 --oem 0 切换回 Tesseract 3 的字符匹配引擎 Tesseract **没有内置 GUI**,需要命令行调用,或者通过 wrapper(如 pytesseract、Pytesseract、Rust binding 等)接入 Python 或其他语言。 安装方式(Windows/macOS/Linux 均支持): ```bash # macOS brew install tesseract # Ubuntu/Debian sudo apt install tesseract-ocr # Windows(用 Scoop) scoop install tesseract # 验证安装 tesseract --version ``` 安装完语言包后(比如中文),一行命令就能识别: ```bash tesseract image.png output -l chi_sim ``` Tesseract 的优势在于**极简部署**——装完就能用,不需要 Python 环境,不需要深度学习框架,资源占用也小。但它只能输出纯文本,遇到表格、印章、公式这些复杂结构就无能为力了。 ## PaddleOCR vs Tesseract:选哪个 两个最主流的开源 OCR 方案对比: | 对比项 | PaddleOCR | Tesseract | |--------|-----------|-----------| | Stars | 78,427 | 74,242 | | 最新版本 | v3.5.0 | v5.5.2(2025-12) | | 中文识别 | ⭐⭐⭐⭐⭐ 极强 | 一般(需配语言包) | | 模型体积 | 较大(需 PaddlePaddle) | 较小(几十 MB) | | 部署复杂度 | 中等 | 低(装完即用) | | 表格/印章/公式 | ✅ 原生支持 | ❌ 纯文字 | | 输出格式 | JSON/Markdown | 纯文本/HTML/TSV | | 多语言 | 111 种 | 100+ 种 | | 隐私性 | ⭐⭐⭐⭐⭐ 完全本地 | ⭐⭐⭐⭐⭐ 完全本地 | | OpenCode 集成 | ✅ MCP 可接 | ✅ MCP 可接 | | 适合场景 | 复杂文档、结构化输出 | 简单文字提取、快速部署 | 简单结论: - **纯文字提取 + 快速上手** → Tesseract(装完就能用) - **复杂文档(表格、印章、多语言混合、中文为主)** → PaddleOCR - **让 OpenCode 帮你写代码** → 两者都行,Tesseract 门槛更低,PaddleOCR 中文场景更强 ## OpenCode 怎么配合 Tesseract Tesseract 功能清晰,但真要集成到项目里,还是需要写代码:文件读取、批量处理、结果解析、错误处理……这一步反而是 OpenCode 最擅长的事。 架构是这样的: ``` 开发者 → OpenCode(AI 编程助手) ↓ 发指令:"写一个批量 OCR 脚本" ↓ 分析需求 → 生成代码 → 调试排错 ↓ Tesseract CLI / libtesseract ↓ 结构化输出(文本/JSON) ``` OpenCode 在这里扮演"开发者替身"——你描述需求,它生成可运行的脚本。你不需要研究 Tesseract 的命令行参数,也不需要写批处理逻辑。 ### 实际跑一遍:OCR 网页核心代码 需求:做一个网页,可以上传图片识别文字,结果下载为 Markdown。 OpenCode 接到需求后,生成的核心 Python 代码大概是这样: ```python import subprocess import tempfile import os from flask import Flask, request, jsonify app = Flask(__name__) def ocr_image(image_path, lang='eng'): """调用 Tesseract OCR""" result = subprocess.run( ['tesseract', image_path, 'stdout', '-l', lang, '--oem', '3', '--psm', '6'], capture_output=True, text=True ) return result.stdout.strip() @app.route('/ocr', methods=['POST']) def handle_ocr(): file = request.files['image'] lang = request.form.get('lang', 'eng') # 保存临时文件 with tempfile.NamedTemporaryFile(delete=False, suffix=os.path.splitext(file.filename)[1]) as tmp: file.save(tmp.name) text = ocr_image(tmp.name, lang) os.unlink(tmp.name) # 清理 return jsonify({ 'success': True, 'text': text, 'stats': {'chars': len(text), 'lines': text.count('\n') + 1} }) ``` 关键参数说明: - `--oem 3`:使用 LSTM 神经网络引擎(最准确) - `--psm 6`:假设统一文本块,自动分段 OpenCode 会自动选择合适的 --psm 值,也会根据你的图片类型(扫描件、照片、表格区域)调整参数。 ### 处理 PDF 的两种情况 PDF 里的内容分两种:**文本层**(可直接 copy)和**嵌入图片**(需要 OCR)。 OpenCode 生成的方案会先判断类型,再决定处理方式: ``` 用户上传 PDF ↓ 用 pymupdf(PyMuPDF)读取 ↓ 判断:有可提取文本层? → 有 → 直接用 text 无 → 用 pymupdf 提取嵌入图片页 ↓ 调用 Tesseract 识别图片 ↓ 返回 Markdown 结果 ``` 核心代码片段: ```python import fitz # PyMuPDF def extract_text_from_pdf(pdf_path, lang='eng'): doc = fitz.open(pdf_path) pages_text = [] for page_num, page in enumerate(doc): text = page.get_text() if text.strip(): pages_text.append(f"## Page {page_num + 1}\n\n{text}") else: # 无文本层,转图片 OCR pix = page.get_pixmap(dpi=300) with tempfile.NamedTemporaryFile(suffix='.png', delete=False) as tmp: pix.save(tmp.name) text = ocr_image(tmp.name, lang) os.unlink(tmp.name) pages_text.append(f"## Page {page_num + 1}\n\n{text}") return '\n\n'.join(pages_text) ``` 这套方案用 PyMuPDF 替代 pdf2image 的原因:pdf2image 依赖 poppler,在 Windows 上需要额外配置环境变量,而 PyMuPDF 是纯 Python,跨平台更友好。 ## 图片预处理:决定 OCR 质量的关键 Tesseract 官方文档明确指出:**改善输入图片质量是提升 OCR 准确率的最重要手段**。 常见预处理操作,OpenCode 可以帮你写: ```python from PIL import Image, ImageFilter, ImageEnhance def preprocess_image(image_path): img = Image.open(image_path) # 转灰度 img = img.convert('L') # 二值化(去噪) img = img.point(lambda x: 0 if x < 128 else 255, '1') # 锐化(模糊扫描件效果差) img = img.filter(ImageFilter.SHARPEN) # 对比度增强 enhancer = ImageEnhance.Contrast(img) img = enhancer.enhance(1.5) return img ``` 预处理后用 Tesseract 识别,效果通常能提升 20-30%。 ## 安装配置速查 ### Tesseract 安装 ```bash # macOS brew install tesseract tesseract-lang # 英文+多语言 # Ubuntu/Debian sudo apt install tesseract-ocr sudo apt install tesseract-ocr-chn # 中文语言包 # Windows scoop install tesseract # 验证 tesseract --version ``` ### Python 环境准备 ```bash pip install pytesseract Pillow PyMuPDF flask ``` ### 快速试用(单图片识别) ```bash # 命令行直接用 tesseract input.png stdout -l eng --oem 3 --psm 6 # Python 调用 import pytesseract from PIL import Image img = Image.open('input.png') text = pytesseract.image_to_string(img, lang='eng') print(text) ``` ### 中文识别配置 ```bash # 下载中文语言包(chi_sim=简体中文,chi_tra=繁体中文) # 语言包放在 Tesseract 的 tessdata 目录 # 或用 pytesseract 指定路径 import pytesseract pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' text = pytesseract.image_to_string(img, lang='chi_sim') ``` ## 长期 OCR 需求?自己搭个网页更划算 如果你有长期图片、PDF 转文字需求,完全可以自己动手开发个简单网页,部署后随时用。不再为付费 OCR 发愁,也不依赖飘忽的商业 API 价格。 结合 OpenCode 的 Skill 流水线,把常用的文档处理流程固化下来,反复跑。你只需要描述需求,OpenCode 帮你写代码、调通、部署。 ## 写在最后 OpenCode + Tesseract 这个组合的价值不在于"OCR",而在于**把文档识别能力变成可编程的日常工作流**。你可以让它帮你写批量处理脚本、搭 Web OCR 服务——这些以前需要专门研究 Tesseract 命令行,现在用自然语言描述需求就能做到。 本质上:**让 AI 帮你写调用 AI 能力的代码**。 **你在用 OpenCode + Tesseract 做什么?或者有什么文档识别的需求?评论区说说。**
摘要
标签
多个标签用逗号分隔
分类
技术文章
教程指南
工具测评
项目实战
行业观察
默认
💾 保存修改
← 返回查看
返回列表