参考:https://groups.google.com/forum/#!msg/tesseract-ocr/MSYezIbckvs/kO1VoNKMDMQJ

V4版本代码示例 :

import pytesseract
from PIL import Image as img text = pytesseract.image_to_string(img.open('src2\B1.jpg'), lang='teld+chi_sim', config='--psm 3 --oem 1')
print(text.replace('”', ''))

合并识别结果


在实际使用 tesseract-orc 识别库的时候,初次制作的识别库很有可能识别率不太理想,需要后期慢慢补充。将多个修正过的box文件合并成一个识别库。
  • 首先,需要图片样本.tif文件,位置文件.box ,只要有这两个文件在,就可以合并字典

假设已存在如下样品图片和修正过的box文件:

  • image.font.1.tif image.font.1.box
  • image.font.2.tif image.font.2.box
  • image.font.3.fit image.font.3.box

1、先生成相对应的 .tr 文件

  • tesseract image.font.1.tif image.font.1 nobatch box.train
  • tesseract image.font.2.tif image.font.2 nobatch box.train
  • tesseract image.font.3.tif image.font.3 nobatch box.train

2、提取字符

  • unicharset_extractor image.font.1.box image.font.2.box image.font.3.box

3、生成字体特征文件

  • echo image 0 0 0 0 0 >font_propertiesfont

4、执行如下命令

  • mftraining -F font -U unicharset image.font.1.tr image.font.2.tr image.font.3.tr

5、聚集所有.tr 文件

  • cntraining image.font.1.tr image.font.2.tr image.font.3.tr

6、重命名文件

  • unicharset
  • inttemp
  • normproto
  • pfftable
  • shapetable

7、合并所有文件 生成一个大的字库文件

  • combine_tessdata image.

示例代码:

/*生成box文件*/
/*tesseract teld.shz.exp0.tif teld.shz.exp0 -l chi_sim --psm 3 --oem 1 batch.nochop makebox*/ tesseract teld.shz.exp0.tif teld.shz.exp0 -l chi_sim batch.nochop makebox /*生成font_properties文件*/
echo shz 0 0 0 0 0 >font_properties /*生成.tr训练文件*/
tesseract teld.shz.exp0.tif teld.shz.exp0 nobatch box.train /*生成字符集文件*/
unicharset_extractor teld.shz.exp0.box /*生成shape文件*/
shapeclustering -F font_properties -U unicharset teld.shz.exp0.tr /*生成聚字符特征文件*/
mftraining -F font_properties -U unicharset teld.shz.exp0.tr /*生成字符正常化特征文件*/
cntraining teld.shz.exp0.tr /*文件重命名*/
rename normproto teld.normproto
rename inttemp teld.inttemp
rename pffmtable teld.pffmtable
rename shapetable teld.shapetable
rename unicharset teld.unicharset /*合并训练文件*/
combine_tessdata teld.

 参考资料


OCR6:Custom Traineddata的更多相关文章

  1. 管理后台-第二部分:Custom sections in Umbraco 7 – Part 2 the views(翻译文档)

    在上一篇文章中我们讨论了怎样在我们Umbraco7.0版本中去添加一个新的自定义的应用程序(或部分)和如何去定义一个树.现在我将给你展示你改何如添加视图,来使你的内容可以做一些更有意义的事情. The ...

  2. Unity扩展编辑器--类型3:Custom Editors

    Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点. public ...

  3. 问题:Custom tool error: Failed to generate code for the service reference 'AppVot;结果:添加Service Reference, 无法为服务生成代码错误的解决办法

    添加Service Reference, 无法为服务生成代码错误的解决办法 我的解决方案是Silverlight+WCF的应用,Done Cretiria定义了需要在做完Service端的代码后首先运 ...

  4. Windows-universal-samples学习笔记系列五:Custom user interactions

    Custom user interactions Basic input Complex inking Inking Low latency input Simple inking Touch key ...

  5. Entity Framework 6.0 Tutorials(8):Custom Code-First Conventions

    Custom Code-First Conventions: Code-First has a set of default behaviors for the models that are ref ...

  6. Tomcat:Custom a common error page valve for all web application in tomcat

    如果在一个Tomcat Server上会部署多个Web应用,又希望这多个Web应用共用一套错误页面,而不是使用默认的错误页面.就需要自定义错误页面了. 在每个web应用中都可以通过error-page ...

  7. EBS增加客制应用CUX:Custom Application

    1. 创建数据库文件和帐号 [root@ebs12vis oracle]# su - oracle[oracle@ebs12vis ~]$ sqlplus / as sysdba SQL*Plus: ...

  8. 展望未来:使用 PostCSS 和 cssnext 书写 CSS

    原文链接:A look into writing future CSS with PostCSS and cssnext 译者:nzbin 像twitter,google,bbc使用的一样,我打算看一 ...

  9. 如何用Unity制作自定义字体——Custom Font

    一.效果图 二.步骤 将美术做好的字体分块导入BMFont,使用BMFont工具生成艺术字库: 将上面的数据导入unity资源目录下:*.fnt文件中记录每个文字的状态信息: 导入*.png图片并设置 ...

随机推荐

  1. Candy Treasure Box

    This is an interesting puzzle game. In the game, you need to use your brain, think carefully, operat ...

  2. pyhton2 and python3 生成随机数字、字母、符号字典(用于撞库测试/验证码等)

    本文介绍Python3中String模块ascii_letters和digits方法,其中ascii_letters是生成所有字母,从a-z和A-Z,digits是生成所有数字0-9.string.p ...

  3. 【AGC009C】Division into Two

    [AGC009C]Division into Two 题面 洛谷 题解 首先有一个比较显然的\(n^2\)算法: 设\(f_{i,j}\)表示\(A\)序列当前在第\(i\)个,\(B\)序列当前在第 ...

  4. Linux中fork()函数详解(转载)

    linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...

  5. Linux下rpm及yum安装jdk

    笔者使用的Linux操作系统为CentOS7,Linux中有三种安装jdk的方式,在这里笔者主要介绍两种方式,即rpm和yum安装及卸载jdk,还有一种是直接从官网下载 tar.gz 压缩文件上传到L ...

  6. Redis与Mysql双写一致性方案解析

    一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存 ...

  7. 深入理解 JavaScript 中的 class

    在 ES6 规范中,引入了 class 的概念.使得 JS 开发者终于告别了,直接使用原型对象模仿面向对象中的类和类继承时代. 但是JS 中并没有一个真正的 class 原始类型, class 仅仅只 ...

  8. [技术博客] JS正则活学活用

    正则基本语法 正则表达式(Regular Expression)是用单字符串来匹配一系列复合条件字符串的模式,对于乔姆斯基3型语法. 数学定义: 串行AB表示集合 {αβ | α ∈ A ,β ∈ B ...

  9. jenkins更新为国内源

    系统管理->插件管理->高级->升级站点->URL https://jenkins-zh.gitee.io/update-center-mirror/tsinghua/upda ...

  10. linux 判断一个用户是否存在

    #!/bin/bash read -p "please input a username:" username >&; then echo "user ex ...