尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Tesseract 如何用 TESSDATA_PREFIX 与 --tessdata-dir 指向自定义语言数据目录并用 --list-langs 验证

Tesseract 如何用 TESSDATA_PREFIX 与 --tessdata-dir 指向自定义语言数据目录并用 --list-langs 验证 Tesseract 如何用 TESSDATA_PREFIX 与 --tessdata-dir 指向自定义语言数据目录并用 --list-langs 验证【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract当 Tesseract 的tessdata语言数据*.traineddata训练文件与configs配置不在安装默认位置时——比如你自行下载了某个语言包、按版本单独准备了数据目录或想临时切换数据目录——需要让引擎知道去哪里找。Tesseract 提供了两种指向方式环境变量TESSDATA_PREFIX和命令行选项--tessdata-dir并可以用--list-langs立即验证引擎确实从指定目录读取了语言列表。适用对象是已经安装tesseract命令行可执行文件、希望使用默认目录之外的语言数据的用户。先明确两种机制与目录结构根据 man 手册 doc/tesseract.1.asc两条路径的语义是--tessdata-dir PATHSpecify the location of tessdata path即直接指定tessdata目录本身TESSDATA_PREFIX若被设置为某个路径该路径将被用于查找包含语言/脚本识别模型和配置文件的tessdata目录。手册同时注明使用--tessdata-dir是推荐替代方式。目录结构是固定的以非标准语言包foo.traineddata为例设置TESSDATA_PREFIX后文件必须能在TESSDATA_PREFIX/tessdata/foo.traineddata处被找到然后给 Tesseract 传-l foo。也就是说TESSDATA_PREFIX指向的是tessdata目录的父级其下要有tessdata/子目录--tessdata-dir直接指向tessdata目录本身。CONFIGFILE 的查找位置也依赖同一套结构config 名可以是tessdata/configs或tessdata/tessconfigs中的文件。方式一设置 TESSDATA_PREFIX 环境变量两种常见写法# 对当前 shell 会话含后续所有 tesseract 命令生效 export TESSDATA_PREFIX/data/ocr # 只对单条命令生效将 你的tessdata父目录 替换为 tessdata 目录所在路径 TESSDATA_PREFIX/data/ocr tesseract --list-langs使用前注意一个来自源码 src/ccutil/ccutil.cpp 的边界条件程序会检查TESSDATA_PREFIX指向的目录是否存在不存在时会打印Warning: TESSDATA_PREFIX path does not exist, ignore it并忽略该变量、回退到其他查找逻辑。所以设置前先确认路径有效否则会静默失效而不是报错退出。方式二使用 --tessdata-dir 命令行选项# PATH 替换为你的 tessdata 目录本身目录内直接是 *.traineddata 文件 tesseract --list-langs --tessdata-dir /data/ocr/tessdata--tessdata-dir只在当次命令中生效无需改动 shell 环境。src/tesseract.cpp 中--help-extra的帮助信息也给出了同样的组合用法%s --list-langs [--tessdata-dir PATH]。两种方式的优先级同样可以在 src/ccutil/ccutil.cpp 的main_setup中确认命令行的--tessdata-dirargv0优先其次是环境变量TESSDATA_PREFIX两者都没有时使用编译期内置的TESSDATA_PREFIX路径再否则回退到当前目录./。当同时设置两者时以--tessdata-dir为准。用 --list-langs 验证目录是否生效验证命令不带参数时使用引擎默认/环境变量确定的目录带--tessdata-dir时验证该指定目录tesseract --list-langs tesseract --list-langs --tessdata-dir /data/ocr/tessdata--list-langs的作用是 List available languages for tesseract engineman 手册明确说明它可以与--tessdata-dir PATH一起使用。执行入口在 src/tesseract.cpp 的PrintLangsList输出会显示引擎实际使用的数据目录路径和该目录下的语言数量再逐行列出语言代码List of available languages in datapath (N): eng osd上面的输出格式与占位符来自源码中的打印语句datapath会被替换为引擎实际使用的目录路径N为语言数量具体数值随目录内容而变。验证成功的判断依据就是列出的语言来自你指定的目录例如新目录里只有foo输出中只有foo默认目录里的eng不会出现在该列表中且路径一行的目录与你指定的目录一致。端到端示例加载非标准语言包以加载一个名为foo.traineddata的语言包为例串联起完整路径路径替换为你自己的实际位置# 1. 确认文件位置训练数据需在 prefix/tessdata/ 下 ls /data/ocr/tessdata/foo.traineddata # 2. 验证引擎能看到该语言两种方式任选其一 TESSDATA_PREFIX/data/ocr tesseract --list-langs tesseract --list-langs --tessdata-dir /data/ocr/tessdata # 3. 确认列表中出现 foo 后用它做识别 TESSDATA_PREFIX/data/ocr tesseract image.png out -l foo-l LANG未指定时默认为eng多个语言用分隔例如tesseract myimage.png myimage -l engdeufra。注意 man 手册中的强制顺序要求-l LANG、-l SCRIPT与--psm N必须出现在任何 CONFIGFILE 之前例如tesseract image.png demo alto hocr pdf txt中语言与 PSM 选项要放在alto等 config 名之前。排查目录没生效时看哪里报Error opening data file并提示设置 TESSDATA_PREFIX。当目录中缺少指定语言的*.traineddata时src/ccmain/tessedit.cpp 中的init_tesseract_lang_data会打印Error opening data file path并提示 “Please make sure the TESSDATA_PREFIX environment variable is set to your tessdata directory.”。此时先运行--list-langs确认该语言是否在你的目录列表中再核对文件命名是否为lang.traineddata。打印了Warning: TESSDATA_PREFIX ... does not exist, ignore it。环境变量路径不存在时会被忽略并回退见 src/ccutil/ccutil.cpp随后引擎按内置路径或当前目录找数据表现就是“改了环境变量没用”。同时使用了两种方式时以--tessdata-dir为准这是源码中的优先级调试时建议一次只保留一种避免混淆列表到底来自哪个目录。限制与数据获取提示man 手册说明每个版本的 Tesseract 有各自对应的语言数据且至少需要英文eng与 osd 两个 traineddata 文件验证方式正是tesseract --list-langs见 CONTRIBUTING.md。手册 doc/tesseract.1.asc 中的语言清单来自官方tessdata_fast仓库快速模型亦随 Linux 发行版提供tessdata_fast与tessdata_best慢速高精度模型训练时也需要中的模型仅支持 LSTM OCR 引擎同时支持 Tesseract 3 legacy 引擎与 Tesseract 4 LSTM 引擎的模型在官方tessdata仓库中。获取渠道以手册给出的上游仓库为准下载后按上述目录结构放置即可用本文方式验证。数据目录除*.traineddata外还可以包含configs/tessconfigs子目录存放配置文件若你的自定义目录里也需要--user-words/--user-patterns等附加数据参见 INSTALL.GIT.md 与 man 手册中 CONFIG FILES 一节的说明。【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表