《一》准备样本文件

1.样本文件

可使用系统画图工具绘制样本文件,数量越多越好,作为训练的数据,如图

注:样本图像文件保存格式必须为.tif结尾.tiff结尾的格式否则在Merge样本文件的过程中会出现 Couldn’t Seek 错误,如图

以下是绘制的样本文件

《二》Merge样本文件

1.在jTessBoxEditor目录,双击【train.bat】,打开 jTessBoxEditor,如图

点击菜单栏 【Tools 】->【Merge TIFF】,点击

2.在打开的文件选择器中找到将步骤《一》中制作的样本文件,按住Ctrl+鼠标点击选择所有样本图片,点击确定合成一个文件

3.去一个文件名,这个取名是有讲究的,必须是以下格式

格式:
[lang].[fontname].exp[num].tiflang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式例:
number.font.exp0.tif

4.保存成功,弹窗,如图

《三》生成Box文件

1.进入num.font.exp0.tif 文件所在目录下,在目录导航栏键入cmd,点击Enter打开cmd命令窗口,输入如下格式命令

格式:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makeboxlang为语言名称,fontname为字体名称,num为序号例:
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

2.看到目录下生成[lang].[fontname].exp[num].box文件,即代表操作成功

命令行中Page数量即代表合成文件中样本文件数量

《四》定义字符配置文件

在文件夹下新建一个文本文件,命名为font_properties,将.txt去掉,然后使用记事本打开文件,输入如下格式命令

格式:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>fontname为字体名称 italic 斜体 bold 黑体字 fixed 默认字体 serif 衬线字体 fraktur 德文黑字体1代表是
0代表否例:
font 0 0 0 0 0

《五》样本整合、矫正

1.将样本tif文件、num.font.exp0.tif文件、生成的num.font.exp0.box文件以及font_properties文件放在同一个目录下,如图

2.打开 jTessBoxEditor ->【BOX Editor】->【Open】,打开num.font.exp0.tif;矫正修改【Char】列上的字符,如图

注:修改为正确的字符后,点击Enter回车确定,否则不会生效

矫正后:

注:记得Page有好多页哦,每页都需要矫正

有可能生成的 box 文件后,会多一个盒子,它把7识别成了两个

处理策略:根据索引看到的数字修改char,如果不是完整字符就敲 空格,然后点击Enter回车确定,如图

3.几页都矫正处理完毕后点击【Merge】保存,替换原来的 box 文件

《六》批处理

1.在目录下,新建一个文本文件,将文本文件重命名为 run.bat,后缀.txt去掉,将以下代码段复制到文本中,根据自身文件名修改内容,保存

echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr echo Clustering..
cntraining.exe num.font.exp0.tr echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable  echo Create Tessdata..
combine_tessdata.exe num. echo. & pause

2.保存后,双击.bat执行,执行后会在文件夹生成很多文件,如图

3.将目录下的num.trainddata文件复制到Tesseract-OCR安装目录下的tessdata文件夹下,如图(如没有安装Tesseract-OCR,请参考上一篇Tesseract和jTessBoxEditor环境搭建)

《七》测试效果

在画图软件中随手再画一张图片,保存为.jpg/.png等正常图片格式,如图是我画的

在待测试文件同目录下,打开cmd,输入tesseract命令

注:语言参数要设置成刚才拷贝的文件的名称前缀,如果没拷贝 xxx.trainddata,将无法识别

格式:
tesseract imagename resultfilename -l langimagename 待识别的文件名 resultfilename 识别结果的文件名 lang 语言例:
tesseract num1.jpg num01 -l num

识别结果如下

可以看到,由于训练样本较少,导致识别精度不高,只识别出来了3位数,故而,要实现识别的精确度,需要大量的样本

本章介绍到此结束。

文字识别(二) Tesseract识别与jTessBoxEditor样本训练相关推荐

  1. 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本

    中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 本文介绍 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 中文OCR光学字符检测与识 ...

  2. 图像文字识别(二):java调用tesseract 识别图片文字

      在JAVA中调用tesseract识别图片的文字内容,主要有两种方式:cmd方式,tess4j方式.在这篇博客中,主要记录一下通过cmd命令行的方式.cmd方式,就是通过在java中调用命令行,来 ...

  3. python文字识别 训练_Python3.x:pytesseract识别率提高(样本训练)

    Python3.x:pytesseract识别率提高(样本训练) 1,下载并安装3.05版本的tesseract 2,如果你的训练素材是很多张非tif格式的图片,首先要做的事情就是将这么图片合并(个人 ...

  4. Tesseract识别图片提取文字字库训练

    文中测试了3.0和4.0两个版本.发现3.0识别效率不准确,需要训练词库.4.0识别效率就比较高了,而且支持结果生成pdf.txt等格式.所以推荐使用4.0版本. 这个工具可以用在爬虫的时候获取验证码 ...

  5. tesseract识别图片中文字(一)

    一.对于复杂背景中的文本提取 我测试用的简单的单行文本,如果非文本区多对二值化影响大,首先进行提取文本行,再对提取的文本行进行二值化. 实例图片: 图片中的文字区域从此视频帧中提取: 1.切取图片中的 ...

  6. 二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别

    Scanner 项目地址:shouzhong/Scanner 简介: 二维码/条码识别.身份证识别.银行卡识别.车牌识别.图片文字识别.黄图识别.驾驶证(驾照)识别 更多:作者   提 Bug 标签: ...

  7. 使用百度云识别图片中的文字(二):获取图片中的文字

    使用百度云识别图片中的文字(二):获取图片中的文字 上一篇文章中提到怎样获取access_token.此篇文章就是通过access_token来识别图片中的文字. 先来看看:官方的介绍吧: 本文档主要 ...

  8. 使用tesseract识别二维码

    问题描述 做爬虫时,遇到二维码 解决方法 使用tesseract识别二维码. 安装Tesseract-OCR引擎 1 . 给出以下我的链接跳转. https://github.com/tesserac ...

  9. python opencv 文字识别_文本识别 使用 Tesseract 进行 OpenCV OCR 和 文本识别

    文本识别 用 Tesseract 进行 OpenCV OCR 和 文本识 在本教程中,您将学习如何应用OpenCV OCR(光学字符识别).我们将使用OpenCV,Python和Tesseract 执 ...

最新文章

  1. 如何使用 Java8 实现观察者模式?(下)
  2. 服务注册发现consul之五:Consul移除失效服务的正确姿势
  3. lepus mysql 复制监控_MySQL数据库之CentOS搭建lepus3.8监控MySQL
  4. oracle账户解锁28000,oracle 下载 账号密码ORA-28000账户被锁和解锁
  5. 中值滤波medianBlur
  6. 棋盘切割 DP POJ 1191
  7. 什么是虚拟DOM(React16源码分析)
  8. golang 格式化时间成datetime
  9. linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器
  10. Linux系统提高编辑效率的vim工具重要知识
  11. 【Altium Designer】PCB如何生成Gerber文件
  12. N次剩余 最基础的laji入门
  13. [句型] 二十四、特殊疑问句 [ where ] [ what ] [ why ]
  14. BAT等互联网公司薪资分享
  15. MIGO为玩家带来接近无限的可能
  16. 华为机试:计算最大乘积
  17. Servlet学习记录3
  18. win10修复引导工具怎么用【系统天地】
  19. 【墨子对战平台】还没连接上墨子推演服务器,再等1秒 解决办法
  20. axure9 汉化之后打不开

热门文章

  1. 2020-11-15 如何理解蛋白isoform的含义
  2. 单片机c语言左移的作用,[转载]单片机c语言中的左移右移
  3. LoRa笔记02 LoRa sx1276 sx1278的发射功率研究
  4. Java多线程笔记-JonHu
  5. JavaScript大作业 基于HTML+CSS+JavaScript站酷静态页面官网7页
  6. 四位数成员了!这个自动驾驶学习社区真的有料
  7. 我经历的7轮Google面试
  8. STE | 中国农科院茶叶所-长期施肥下茶园土壤碳降解基因和微生物群落的氮诱导变化...
  9. python数据分析知识点_快速介绍Python数据分析库pandas的基础知识和代码示例
  10. 数据解析NFT Q1市场表现:NFT生态正向Polygon聚拢,蓝筹项目“保值“难