文字识别(二) Tesseract识别与jTessBoxEditor样本训练
《一》准备样本文件
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样本训练相关推荐
- 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本
中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 本文介绍 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 中文OCR光学字符检测与识 ...
- 图像文字识别(二):java调用tesseract 识别图片文字
在JAVA中调用tesseract识别图片的文字内容,主要有两种方式:cmd方式,tess4j方式.在这篇博客中,主要记录一下通过cmd命令行的方式.cmd方式,就是通过在java中调用命令行,来 ...
- python文字识别 训练_Python3.x:pytesseract识别率提高(样本训练)
Python3.x:pytesseract识别率提高(样本训练) 1,下载并安装3.05版本的tesseract 2,如果你的训练素材是很多张非tif格式的图片,首先要做的事情就是将这么图片合并(个人 ...
- Tesseract识别图片提取文字字库训练
文中测试了3.0和4.0两个版本.发现3.0识别效率不准确,需要训练词库.4.0识别效率就比较高了,而且支持结果生成pdf.txt等格式.所以推荐使用4.0版本. 这个工具可以用在爬虫的时候获取验证码 ...
- tesseract识别图片中文字(一)
一.对于复杂背景中的文本提取 我测试用的简单的单行文本,如果非文本区多对二值化影响大,首先进行提取文本行,再对提取的文本行进行二值化. 实例图片: 图片中的文字区域从此视频帧中提取: 1.切取图片中的 ...
- 二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别
Scanner 项目地址:shouzhong/Scanner 简介: 二维码/条码识别.身份证识别.银行卡识别.车牌识别.图片文字识别.黄图识别.驾驶证(驾照)识别 更多:作者 提 Bug 标签: ...
- 使用百度云识别图片中的文字(二):获取图片中的文字
使用百度云识别图片中的文字(二):获取图片中的文字 上一篇文章中提到怎样获取access_token.此篇文章就是通过access_token来识别图片中的文字. 先来看看:官方的介绍吧: 本文档主要 ...
- 使用tesseract识别二维码
问题描述 做爬虫时,遇到二维码 解决方法 使用tesseract识别二维码. 安装Tesseract-OCR引擎 1 . 给出以下我的链接跳转. https://github.com/tesserac ...
- python opencv 文字识别_文本识别 使用 Tesseract 进行 OpenCV OCR 和 文本识别
文本识别 用 Tesseract 进行 OpenCV OCR 和 文本识 在本教程中,您将学习如何应用OpenCV OCR(光学字符识别).我们将使用OpenCV,Python和Tesseract 执 ...
最新文章
- 如何使用 Java8 实现观察者模式?(下)
- 服务注册发现consul之五:Consul移除失效服务的正确姿势
- lepus mysql 复制监控_MySQL数据库之CentOS搭建lepus3.8监控MySQL
- oracle账户解锁28000,oracle 下载 账号密码ORA-28000账户被锁和解锁
- 中值滤波medianBlur
- 棋盘切割 DP POJ 1191
- 什么是虚拟DOM(React16源码分析)
- golang 格式化时间成datetime
- linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器
- Linux系统提高编辑效率的vim工具重要知识
- 【Altium Designer】PCB如何生成Gerber文件
- N次剩余 最基础的laji入门
- [句型] 二十四、特殊疑问句 [ where ] [ what ] [ why ]
- BAT等互联网公司薪资分享
- MIGO为玩家带来接近无限的可能
- 华为机试:计算最大乘积
- Servlet学习记录3
- win10修复引导工具怎么用【系统天地】
- 【墨子对战平台】还没连接上墨子推演服务器,再等1秒 解决办法
- axure9 汉化之后打不开
热门文章
- 2020-11-15 如何理解蛋白isoform的含义
- 单片机c语言左移的作用,[转载]单片机c语言中的左移右移
- LoRa笔记02 LoRa sx1276 sx1278的发射功率研究
- Java多线程笔记-JonHu
- JavaScript大作业 基于HTML+CSS+JavaScript站酷静态页面官网7页
- 四位数成员了!这个自动驾驶学习社区真的有料
- 我经历的7轮Google面试
- STE | 中国农科院茶叶所-长期施肥下茶园土壤碳降解基因和微生物群落的氮诱导变化...
- python数据分析知识点_快速介绍Python数据分析库pandas的基础知识和代码示例
- 数据解析NFT Q1市场表现:NFT生态正向Polygon聚拢,蓝筹项目“保值“难