
简介Tesseract-OCR 是一款免费开源的光学字符识别引擎可从图像中提取文字并输出多种文本格式支持百余种语言并提供多语言 API 便于集成到各类应用中。本资源面向需要自动化文档扫描、图像文字提取、数据录入与文档管理的开发者及技术爱好者尤其适合希望让 OCR 支持中文识别的用户。压缩包共 724 个文件约 36.01MB以 C 源码271 个 cpp与头文件274 个 h为主体另含 Java、XML、Shell 脚本、CMake 构建文件、训练数据与语言包等覆盖编译、训练与配置全流程。资源包含安装向导、必要库文件与配置脚本并附带中文语言包安装后即可精准识别中文文本。目前已有 288 人学习下载适合希望快速搭建 OCR 环境、扩展多语言识别能力并集成到自有项目中的读者参考使用。1. Tesseract-OCR 安装前的版本选择为什么 5.x 和 4.x 的坑完全不一样如果你在 Windows 上搜过「Tesseract-OCR 怎么安装」大概率见过两种截然不同的教程一种让你下 exe 一路下一步另一种让你编译源码。更玄学的是有人装完tesseract --version能跑一调用中文识别就报Failed loading language chi_sim。这不是你操作有问题而是 Tesseract 的版本线和语言包路径在 4.x 与 5.x 之间发生了实质性变化。这篇笔记面向需要在本地或服务器上落地 OCR 能力的开发者把 Windows 和 Linux 两条安装路径、中文语言包配置、环境变量设置以及装坏后的回滚方式一次讲清。整套流程我前后在测试机和几台内网服务器上走过多次下面按「装什么版本 → 怎么装 → 怎么配 → 坏了怎么救」的顺序展开。2. 环境准备与安装包获取Windows 和 Linux 两条路怎么选2.1 版本差异与选择建议Tesseract 目前主流是 4.x 和 5.x 两个大版本。4.x 引入了基于 LSTM 的识别引擎5.x 在此基础上优化了训练流程和 API 稳定性。对大多数只想「装完就能识别中文」的开发者我的建议很直接Windows 选 5.x 的预编译安装包Linux 用系统包管理器装 4.x 或 5.x 均可但要注意语言包版本必须和主程序匹配。平台推荐版本安装方式中文包获取方式Windows5.3.xexe 安装包安装时勾选 Additional language dataUbuntu/Debian4.1.x 或 5.xaptapt install tesseract-ocr-chi-simCentOS/RHEL4.xyum/dnf需手动下载 traineddatamacOS5.xbrewbrew install tesseract-lang选 5.x 的理由是它对中文混合排版的识别率比 4.0 早期版本有明显提升而且 Windows 安装包自带语言包勾选项省去手动找traineddata的麻烦。但如果你所在的内网服务器只能离线装4.x 的依赖更少编译成功率更高。2.2 Windows 安装步骤Windows 下我一般走预编译包不折腾源码编译。安装过程本身不复杂关键是几个勾选项别漏。# 下载后双击运行安装程序以下为安装向导中的关键选择 # 1. 选择组件时勾选 Additional language data (download) # 2. 在语言列表中找到 Chinese (Simplified) 并勾选 # 3. 安装路径建议保持默认 C:\Program Files\Tesseract-OCR # 4. 安装完成后验证 tesseract --version tesseract --list-langs--version输出应包含tesseract 5.3.x和leptonica版本号。--list-langs会列出已安装的语言正常应看到chi_sim、eng、osd三项。如果chi_sim不在列表里说明安装时没勾语言包需要单独补。2.3 Linux 安装步骤Linux 下用包管理器最省事但不同发行版的包名有差异这是第一个容易翻车的地方。# Ubuntu / Debian 系 sudo apt update sudo apt install tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng # 验证安装 tesseract --version tesseract --list-langs # CentOS / RHEL 系需要 EPEL 源 sudo yum install epel-release sudo yum install tesseract tesseract-langpack-chi_simtesseract-ocr-chi-sim是简体中文语言包tesseract-ocr-eng是英文包。CentOS 的包名里用的是下划线chi_sim和 Ubuntu 的连字符不同写错就装不上。装完后--list-langs应该输出chi_sim和eng。如果只有eng说明中文包没装上回到包管理器检查包名。2.4 环境变量配置Windows 安装程序通常会自动把 Tesseract 加入 PATH但如果你用的是绿色版或手动解压的包需要自己配。Linux 下如果用 apt 安装/usr/bin/tesseract已经在 PATH 里一般不用动。# Windows 手动添加 PATHPowerShell 管理员权限 [Environment]::SetEnvironmentVariable( Path, $env:Path ;C:\Program Files\Tesseract-OCR, [EnvironmentVariableTarget]::Machine ) # Linux 检查 PATH 是否包含 tesseract which tesseract # 正常输出 /usr/bin/tesseractWindows 改完 PATH 要重开终端才生效这个细节很多人会忽略导致tesseract命令找不到却以为是安装失败。Linux 下如果which tesseract没输出检查/usr/bin是否在 PATH 里或者用绝对路径调用。3. 中文语言包配置traineddata 放哪、怎么验证、版本怎么对齐3.1 语言包文件结构与获取Tesseract 的语言识别能力全靠traineddata文件。每个语言一个文件中文简体是chi_sim.traineddata繁体是chi_tra.traineddata。这些文件必须放在 Tesseract 能找到的tessdata目录下。Windows 默认路径是C:\Program Files\Tesseract-OCR\tessdata\。Linux 下 apt 安装的路径通常是/usr/share/tesseract-ocr/4.00/tessdata/或/usr/share/tesseract-ocr/5/tessdata/具体版本号影响路径这是第二个容易踩的坑。# Linux 下查找 tessdata 实际路径 find /usr -name tessdata -type d 2/dev/null # 常见输出 # /usr/share/tesseract-ocr/4.00/tessdata # /usr/share/tesseract-ocr/5/tessdata # 确认 chi_sim.traineddata 是否存在 ls -lh /usr/share/tesseract-ocr/5/tessdata/chi_sim.traineddata如果路径下没有chi_sim.traineddata可以从语言包仓库单独下载后放入。注意下载的traineddata版本要和主程序版本兼容——4.x 的traineddata在 5.x 上通常能用但 5.x 训练出的新格式在 4.x 上可能报错。3.2 通过 TESSDATA_PREFIX 指定自定义路径当你没有系统目录写权限或者想用自己训练的语言包时需要设置TESSDATA_PREFIX环境变量。这个变量的值应该是tessdata目录的父目录不是tessdata目录本身这是最经典的配置错误。# Linux 下设置 TESSDATA_PREFIX export TESSDATA_PREFIX/home/user/tesseract-data # 目录结构应为 # /home/user/tesseract-data/tessdata/chi_sim.traineddata # Windows 下设置PowerShell [Environment]::SetEnvironmentVariable( TESSDATA_PREFIX, D:\tesseract-data, [EnvironmentVariableTarget]::Machine ) # 对应目录结构D:\tesseract-data\tessdata\chi_sim.traineddata我见过不少人把TESSDATA_PREFIX直接指向tessdata文件夹结果 Tesseract 在tessdata/tessdata/下找语言包自然找不到。记住变量指向父目录Tesseract 自己会拼上tessdata。3.3 验证中文识别是否生效配置完成后用一张包含中文的图片做端到端验证。准备一张简单的 PNG 或 JPG里面写几个中文词然后执行识别命令。# 基本识别命令 tesseract chinese-test.png stdout -l chi_sim # 如果同时需要中英文混合识别 tesseract chinese-test.png stdout -l chi_simeng # 输出到文件 tesseract chinese-test.png output -l chi_sim # 生成 output.txt-l chi_sim指定使用简体中文语言包stdout表示结果直接打印到终端。如果报Error opening data file说明语言包路径不对如果输出乱码或空结果检查图片分辨率和清晰度——Tesseract 对低分辨率图片的识别率下降很明显我一般会把图片放大到 300 DPI 再喂进去。4. 避坑与常见问题排查装完跑不起来先看这几条4.1 报错Failed loading language chi_sim现象tesseract --list-langs能看到chi_sim但识别时仍然报加载失败。原因TESSDATA_PREFIX被设置成了错误路径或者系统里存在多个tessdata目录Tesseract 读到了没有中文包的那个。解决先echo $TESSDATA_PREFIX确认变量值再检查该路径下tessdata/chi_sim.traineddata是否存在。如果存在多个版本用tesseract --print-parameters | grep tessdata看实际加载路径。4.2 Windows 下tesseract不是内部或外部命令现象安装完成但 CMD 或 PowerShell 里敲tesseract提示命令不存在。原因安装时没勾「Add to PATH」或者改完 PATH 没重开终端。解决手动把C:\Program Files\Tesseract-OCR加入系统 PATH然后关闭所有终端窗口重新打开。如果还不行用绝对路径C:\Program Files\Tesseract-OCR\tesseract.exe --version测试程序本身是否正常。4.3 识别结果全是乱码或空白现象命令执行成功但输出的文字完全不可读。原因图片质量太差、分辨率过低或者语言包选错了比如用chi_sim识别繁体中文。解决先用图片工具把图片放大到 300 DPI 以上转为灰度图再试。繁体内容换chi_tra。如果图片有复杂背景先做二值化处理。Tesseract 不是万能 OCR对倾斜、模糊、艺术字体的识别能力有限。4.4 Linux 下 apt 安装后找不到中文包现象apt install tesseract-ocr成功但--list-langs只有eng。原因tesseract-ocr主包不包含语言包中文包是独立包tesseract-ocr-chi-sim。解决sudo apt install tesseract-ocr-chi-sim。如果提示找不到包先sudo apt update刷新源或者检查是否启用了 universe 仓库。4.5 版本升级后原有脚本报错现象从 4.x 升级到 5.x 后之前能跑的 Python 脚本报 API 参数错误。原因5.x 对部分命令行参数和 API 做了调整比如--psm的某些取值行为有变化。解决先tesseract --version确认版本再对照官方 Release Notes 检查用到的参数。如果脚本依赖旧版行为可以用虚拟环境或容器锁定 4.x 版本不要直接升级生产环境。5. 装完怎么验证跑通一套可复用的检查清单装完 Tesseract 只是第一步真正要确认的是「它能在你的工作流里稳定输出」。我一般会走一遍下面这套检查从命令行到代码调用都过一遍避免后面集成时才发现问题。5.1 命令行端到端验证先准备一张测试图内容包含中文和英文各一行分辨率不低于 300 DPI。然后按顺序执行# 1. 确认版本和语言包 tesseract --version tesseract --list-langs # 2. 纯中文识别 tesseract test.png stdout -l chi_sim # 3. 中英文混合识别 tesseract test.png stdout -l chi_simeng # 4. 指定页面分割模式PSM 6 适合统一文本块 tesseract test.png stdout -l chi_sim --psm 6 # 5. 输出为 TSV 格式便于程序解析 tesseract test.png stdout -l chi_sim tsv--psm 6表示「假设是一个统一的文本块」适合大多数文档截图。如果图片是散落的文字可以试--psm 11稀疏文本。TSV 输出会带上每个词的坐标和置信度方便后续做版面分析。5.2 Python 调用验证命令行通了之后用 Python 再验一遍因为实际项目里多半是通过代码调用的。# 需要先安装 pytesseractpip install pytesseract import pytesseract from PIL import Image # Windows 下如果 tesseract 不在 PATH需要指定路径 # pytesseract.pytesseract.tesseract_cmd rC:\Program Files\Tesseract-OCR\tesseract.exe # 指定语言包路径可选当 TESSDATA_PREFIX 已设置时可省略 # pytesseract.pytesseract.tessdata_dir_config r--tessdata-dir D:\tesseract-data\tessdata img Image.open(test.png) text pytesseract.image_to_string(img, langchi_simeng) print(text) # 获取识别置信度 data pytesseract.image_to_data(img, langchi_sim, output_typepytesseract.Output.DICT) for i, conf in enumerate(data[conf]): if int(conf) 0: print(f词: {data[text][i]}, 置信度: {conf})langchi_simeng告诉 pytesseract 同时加载中英文语言包。image_to_data返回的conf字段是置信度低于 60 的结果基本可以忽略。如果 Python 端报TesseractNotFoundError说明tesseract_cmd没配对Windows 下尤其常见。5.3 验证通过的标准我判断一套 Tesseract 环境是否算「装好」看三条--list-langs里有chi_sim命令行识别中文图片能输出可读文字Python 调用不报路径错误。三条都过才算能进项目用。从那以后我每次在新机器上装 Tesseract都会先把--list-langs和一张中文测试图跑一遍确认无误再往下做集成。这个习惯帮我省掉了至少三次「装完以为好了、结果上线才发现中文包没加载」的返工。希望帮到你。本文还有配套的精品资源点击获取