Tesseract 4 自行构建支持双引擎的tessdata 文件
Tesseract 4 版本具备两种识别引擎:新的基于LSTM(神经网络)引擎与传统引擎。通过在初始化时设定不同的EngineMode启动。
OCR Engine modes:
0 Legacy engine only.
1 Neural nets LSTM engine only.
2 Legacy + LSTM engines.
3 Default, based on what is available.
当设置OcrEngineMode为2时,则表示启动双引擎进行识别,Tesseract首先会尝试LSTM引擎,如果识别失败,则会再使用传统引擎进行识别,此种模式追求高精确度,但会消耗较多的系统资源。
Tesseract在识别时,是需要训练数据文件,也就是tessdata。两种引擎对训练数据文件的要求不同,两种引擎训练数据也不通用。
在GitHub上tessdata_fast (https://github.com/tesseract-ocr/tessdata_fast)和tessdata_best (https://github.com/tesseract-ocr/tessdata_best)均是基于LSTM引擎的训练数据,不可以用于传统引擎。
而在 GitHub上的tessdata(https://github.com/tesseract-ocr/tessdata)库中,在2016年10月之后的文件,是包含两种引擎的训练数据文件。
笔者计划Tesseract识别数字及英文(eng.traineddata),希望使用双引擎提升精确度,但发现GitHub的tessdata库中eng.traineddata虽然包含了两种引擎的训练数据,但其中内置的LSTM引擎的训练数据不是最新的(相对于tessdata_best),因此产生了想法,自行构建一个训练数据文件,包含来自于tessdata库中传统引擎训练数据与tessdata_best库中LSTM引擎的训练数据。
使用软件版本
Tesseract:v4.0.0-beta.1.20180608
(Windows版本:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe,
默认安装路径 C:\Program Files (x86)\Tesseract-OCR)
操作系统:Windows 10 64bit
具体步骤
准备文件
从tessdata_best中下载eng.traineddata文件,从tessdata中下载eng.traineddata文件。
两个文件重名,为表示区别,将从tessdata_best文件重命名为eng.best.traineddata。如下:
解压
Tesseract提供了traineddata的打包与解压工具,名为combine_tessdata。我们将使用这个命令完成此步骤。
建议将eng.trainneddata与eng.best.trainneddata解压到两个独立文件夹。
(combine_tessdata 默认在C:\Program Files (x86)\Tesseract-OCR中,执行命令前请确认命令已经加入操作系统PATH路径)
首先完成eng.trainneddata文件解压。
使用命令:combine_tessdata -u <要解压的trainneddata文件路径> <目标路径及解压文件名前缀>
如combine_tessdata -u ..\eng.traineddata 1\eng.
含义为:将当前路径上一级目录中的eng.trainneddata解压到当前目录中名称为1的子目录,且所有文件以eng.开头。
执行命令成功效果类似下图:
同样方法,完成eng.best.traineddata解压。
本文实践时,将eng.trainneddata解压至data文件夹,将eng.best.trainneddata解压至data.best文件夹
eng.trainneddata解压后data文件夹内容:
eng.best.trainneddata解压后data.best文件夹内容:
经过对比,可发现,eng.best.traineddata中lstm文件与eng.traineddata中不同。
合并及重新封包
将data.best(来自eng.best.traineddata)整体覆盖到data目录。
此时data目录中是一份结合了最新的LSTM及传统引擎训练文件的文件夹。
在data目录中,执行combine_tessdata进行封包。
执行命令:combine_tessdata .\eng.
命令格式:combine_tessdata <计划打包的tessdata文件目录以及欲打包的文件前缀>
combine_tessdata .\eng. 命令则会将当前路径下以eng.开头的文件打包到eng.trainneddata,执行成功效果如下:
执行完毕后,就可以获得合并了两种引擎训练数据的文件,如下。
至此全部步骤完毕。
PS:代码中的设置(以Tess4j 4.0.2为例)
ITesseract instance = new Tesseract();
instance.setOcrEngineMode(TessOcrEngineMode.OEM_TESSERACT_LSTM_COMBINED);
instance.setDatapath(tessdataFolder.getAbsolutePath());
instance.setPageSegMode(TessPageSegMode.PSM_SINGLE_LINE);
instance.setLanguage("eng");
instance.setTessVariable("tessedit_char_whitelist","0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
其中setOcrEngineMode(TessOcrEngineMode.OEM_TESSERACT_LSTM_COMBINED)表示启动两种引擎。
Tesseract 4 自行构建支持双引擎的tessdata 文件的更多相关文章
- 不借助vue-cli,自行构建一个vue项目
前言: 对于刚刚接触vue的同学来说,直接用官方的构建工具vue-cli来生成一个项目结构会存在一些疑惑,比如: .vue组件 为什么可以写成三段式(tempalte.script.style)? ...
- 基于官方Drone-CI 的alpine版本asia亚洲时区构建支持. Drone-CI based alpine Timezone Build
基于官方Drone-CI 的alpine版本最简化添加亚洲时区Dockerfile构建支持. iotd@Github: drone-ci-based-alpine-timezone-build 如添加 ...
- xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- Xmake v2.7.3 发布,包组件和 C++ 模块增量构建支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- 如何让WordPress支持上传更多文件类型
如何让WordPress支持上传更多文件类型 可以在functions.php中这样写: 1 2 3 4 5 6 7 8 9 add_filter('upload_mimes', 'wpdit_f ...
- PHP 支持中文目录和文件的的遍历:文件编码转换
在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换: <?php header("Content-type:text/h ...
- 如何让U盘支持大于4G的文件
U盘通常是FAT(*)格式,不能支持大于4G的文件.为了实现这个目的,通常可以把U盘格式化成NTFS或者exFAT,这两种文件系统都支持大于4G的文件. 一.格式化成NTFS第一步首先我们把优盘插入电 ...
- 让Android中的webview支持页面中的文件上传
android webview在默认情况下是不支持网页中的文件上传功能的: 如果在网页中有<input type="file" />,在android webview中 ...
随机推荐
- 一个简单的统计问题(解决方案:Trie树)
题目如图 输入几个不重复的单词和几个前缀,分别统计出单词中包含前缀的个数. Trie树 这个题目用到了 Trie 树.它在百度百科中的定义如下:在计算机科学中,Trie,又称字典树.单词查找树 ...
- hive使用derby的服务模式(可以远程模式)
hive默认使用的derby的嵌入模式.这个就面临着,无法多个并发hive shell共享的问题. 使用MySQL服务器也可以解决问题,但安装.配置太麻烦了. 可以使用轻量级的derby的c/s服务模 ...
- 关于ssm框架使用mysql控制台出现警告问题
使用MySQL时,总会时不时出现这种警告信息 警告信息:WARN: Establishing SSL connection without server's identity verification ...
- 多线程之Thread类
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
- Vue2.5开发去哪儿网App 从零基础入门到实战项目
第1章 课程介绍本章主要介绍课程的知识大纲,学习前提,讲授方式及预期收获. 1-1 课程简介 试看第2章 Vue 起步本章将快速讲解部分 Vue 基础语法,通过 TodoList 功能的编写,在熟悉基 ...
- 1549: Navigition Problem (几何计算+模拟 细节较多)
1549: Navigition Problem Submit Page Summary Time Limit: 1 Sec Memory Limit: 256 Mb Su ...
- 实现Redis Cluster并实现Python链接集群
目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...
- BZOJ4033 [HAOI2015]树上染色
本来是考虑, $ f[x][i][0/1] $ 表示 $ x $ 子树中有$i$个黑点,且 $ x $ 是白点/黑点.但是这里的答案是要统计不同的子树的贡献的.所以就gg了. 看了题解. 应该是要设$ ...
- 【Len's DMG】macOS Mojave 10.14.1 正式版 18B75 With Clover 4726原版镜像
亮点:本次10.14.1正式版镜像更新config配置文件SMbios机型信息,让识别更趋于完善,自带去除10.14.1 USB端口限制补丁和最新USBInjectAll.kext,移除大量可能造成卡 ...
- c语言计算功能
---恢复内容开始--- #include <stdio.h> int main(){int a1,a2,a3,a4; printf("请输入数值"); a4=0;wh ...