Tesseract-OCR的简单使用与训练

  最近看到某个网站提交数据要提交验证码,用tesseract自带的识别,

  

  识别出来是什么鬼,0-9识别成了什么玩意!

  

  so决定自己训练下tesseract...

1.准备工作(安装工具环境)

1.下载安装tesseract-ocr-setup-3.02.02.exe安装包   http://www.pc0359.cn/downinfo/55218.html

  2.安装jTessBoxEditor

    下载jTessBoxEditor,地址https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/;解压后得到jTessBoxEditor,由于这是由Java开发的,所以我们应该确保在运行jTessBoxEditor前先安装JRE(Java Runtime Environment,Java运行环境)。

  3.安装Java环境:http://mydown.yesky.com/pcsoft/33490441.html

2.准备训练图片,可以多张图片,我们可以用画图工具绘制样本文件,数量越多越好

  准备图片如下

  

3.Merge样本文件

  打开jTessBoxEditor,ctrl+m 选择所有样本图片,并将合并文件保存为 bm.font.exp0.tif

  

4.生成BOX文件

  打开命令行并切换至bm.font.exp0.tif所在目录,

  

  输入如下命令,生成文件名为bm.font.exp0.box

tesseract bm.font.exp0.tif bm.font.exp0 batch.nochop makebox

  此时文件夹下会多出一个bm.font.exp0.box文件

5.定义字符配置文件

  在目标文件夹内生成一个名为font_properties的文本文件,内容为

font 0 0 0 0 0 

  【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>

  fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用,如果是txt文件记得把.txt后缀去掉。

  

6.字符矫正

  打开jTessBoxEditor,BOX Editor -> Open,打开bm.font.exp0.tif;

  

7.生成字符特征文件

tesseract.exe bm.font.exp0.tif bm.font.exp0 nobatch box.train

  

  这一步将生成两个文件,bm.font.exp0.tr(特征文件)和bm.font.exp0.txt文件

8.计算字符集(unicharset) 

unicharset_extractor.exe bm.font.exp0.box

  

  这一步产生字符集文件unicharset

9.聚集字符特征(inttemp、pffmtable、normproto) 

mftraining -F font_properties -U unicharset -O bm.unicharset bm.font.exp0.tr

  

  根据上一步产生的字符集文件unicharset,来生成当前新语言的字符集文件mfunicharset。同时还会产生图形原型文件inttemp和每个字符所对应的字符特征数文件pffmtable。附带还会产生Microfeat文件,但是这个文件没啥用。

  

10.接下来产生字符形状正常化特征文件normproto

cntraining.exe bm.font.exp0.tr

11.重命名打包文件

  将如下四个文件加上bm.前缀
  normproto bm.normproto
  inttemp bm.inttemp
  pffmtable bm.pffmtable
  shapetable bm.shapetable   

  

12.合并训练文件(*.traineddata) 

combine_tessdata.exe bm.

  

  生成bm.traineddata文件,

  

  将这个文件复制到Tesseract-OCR\tessdata文件夹下然后用训练过的字库在识别下 

  

tesseract beiming.png output_2 -l bm

  

  识别完全正确,细心的人会发现,最后一句指令,我们使用了指令[-l bm]而不是[-l eng]。这说明,最后一次转换我们使用的是新生成的bm语言的匹配库而不是默认的eng语言匹配库

python pytesseract使用

  

import pytesseract
from PIL import Image
# pytesseract.pytesseract.tesseract_cmd='D:\Program Files\python\Tesseract-OCR\\tesseract.exe'
def getyzm():
image1 = Image.open('yzm.jpg')
w,h = image1.size
#创建新图片
image2 = Image.new("RGB",(w+10,h+6),(255,255,255))
#两张图片相加: 我这里的图片不是标准的图片格式所以需要盖在新图片上
image2.paste(image1,(5,3))
# image2.save("yzm.png")
result = pytesseract.image_to_string(image2,lang="num")
return result print(getyzm())

  

Tesseract-ocr视觉学习-验证码识别及python import pytesseract使用的更多相关文章

  1. 蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率

    识别验证码一直是本人想要做的事情,一直在接触按键精灵,了解到有一个虹鱼图灵识别插件专门做验证码和图像识别,原理就是图片处理和制作字库识别,制作字库我一直觉得很麻烦,工程量太大.不管怎样,它能用能达到我 ...

  2. Java使用Java OCR API进行验证码识别

    Maven坐标: <!-- https://mvnrepository.com/artifact/com.asprise.ocr/java-ocr-api --> <dependen ...

  3. tesseract ocr训练 pt验证码

    识别率有问题A大概率识别为n,因此需要训练,这里讲一下 如何训练 参考 java代码里边直接使用tess4j,是对tesseract的封装,但是如果要训练,还是需要在进行安装tesseract-ocr ...

  4. 基于pyteseract google ocr的图形验证码识别

    先灰化图片,把图片二值化,利用pytesseract包的pytesseract.image_to_string转换出文字.

  5. python验证码识别接口及识别思路代码

    1,验证码识别接口代码 import json import base64 import requests def shibie(): data = {} path = "./img/&qu ...

  6. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  7. 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://github.com/muchrooms/zheye 注意:此程序依赖以下模块包 Keras==2.0.1 Pillow= ...

  8. 使用Python基于OpenCV的验证码识别

    Blog:https://blog.csdn.net/qq_40962368/article/details/89312429(Verification_Code_Identification) 步骤 ...

  9. Python&selenium&tesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考

    在自动化测试或者安全渗透测试中,Captcha验证码的问题经常困扰我们,还好现在OCR和AI逐渐发展起来,在这块解决上越来越支撑到位. 我推荐的几种方式,一种是对于简单的验证码,用开源的一些OCR图片 ...

随机推荐

  1. c#文件相关笔记

    1.将*.txt文件内容转换为一个字符串str FileStream fs = new FileStream("路径\\*.txt", FileMode.Open); Stream ...

  2. idea没有绑远程地址,如何提交到github的空项目

    一 有同事问我怎么提交到github的空项目....这么简单.... 二 1.创建本地的git仓库 选择自己的项目 创建成功 2.添加代码,选中左边的文件,add 3.提交 5.定义远程仓库,不定义的 ...

  3. 《C#高效编程》读书笔记05-为类型提供ToString()方法

    System.Object.ToString()是.NET环境中最常用的方法之一.编写类型时,要提供一个合理的ToString版本,否则使用者就不得不自己构造一套可以阅读的表示. public cla ...

  4. centos6安装lnmp

    CentOS 6 默认仓库不包含nginx,我们可以手动添加nginx的仓库. 访问nginx官网获取repo文件 我们需要先访问nginx的官方网站,获取官方的仓库地址.点击这里访问nginx官方文 ...

  5. jsch连接Linux工具类

    import com.alibaba.fastjson.JSONObject;import com.jcraft.jsch.*;import org.slf4j.Logger;import org.s ...

  6. LaTeX 符号大全

    常用数学符号的 LaTeX 表示方法 2016-10-31 16:22 | 黄荣生   常用数学符号的 LaTeX 表示方法 1.指数和下标可以用^和_后加相应字符来实现.比如: 2.平方根(squa ...

  7. 海海DRM视频保护解密流程分析

    环境及工具 手机    :小米手机 MI 2A 系统版本: Android 4.1.1 工具    : IDA pro 6.6 .C32Asm .VS2005 一:第一次打开加密视频会出现如下验证: ...

  8. Centos内核调优参考

    net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_keepalive_time = 600 net.i ...

  9. html5 app开发实例 Ajax跨域访问C# webservices服务

    通过几天的研究效果,如果在vs2010工具上通过webservice还是比较简单的,毕竟是一个项目. 如果您想通过HTML5 做出来的移动APP去访问c#做出来的webservice,那么就没那么简单 ...

  10. happy2018暑期集训课后习题001

    根据需求补全下面的代码: 需求: 每行输入三个整数a.b.c,根据a的值不同对b和c进行不同的操作: a为0时,计算b+c a为1时,计算b-c a为2时,计算b*c a为3时,计算b/c 并输出操作 ...