当前位置:首页 >> 计算机软件及应用 >>

提高Tesseract-ocr识别精度


提高 Tesseract-OCR 识别精度的方法 1.0 Tesseract-OCR 简介 OCR(Optical Character Recognition 光学字符识别)技术,是指电子设备(例 如扫描仪或数码相机) 检查纸上打印的字符, 通过检测暗、 亮的模式确定其形状, 然后用字符识别方法将形状翻译成计算机文字的过程。 Tesseract 的 OCR 引擎最先由 HP 实验室于 1985 年开始研发, 至 1995 年时已 经成为 OCR 业内最准确的三款识别引擎之一。然而,HP 不久便决定放弃 OCR 业 务,Tesseract 也从此尘封。 数年以后, HP 意识到, 与其将 Tesseract 束之高阁, 不如贡献给开源软件业, 让其重焕新生--2005 年,Tesseract 由美国内华达州信息技术研究所获得,并 求诸于 Google 对 Tesseract 进行改进、消除 Bug、优化工作。 Tesseract 目前已作为开源项目发布在 Google Project, 其最新版本 3.0 已经支 持中文 OCR。 1.1 Tesseract-OCR 的安装及使用说明 1. Tesseract-OCR 的安装过程 下载 tesseract-ocr-setup-3.02.02.exe 进行安装 (1) click next

(2) 选中 I accept the terms of License Agreement,点击 next

(3) 点击 next (4) 修改路径 d:\Program Files\Tesseract-OCR,点击 next

(5) 点击 next (6)点击 Install (7)点击 next (8)点击 finish 2.Tesseract-OCR 使用 (1)为了进行中文 OCR, 将简体中文语言包(chi_sim.traineddata)复制到 【tessdata】 目录下

(2)在 DOS 下切换到 Tesseract 的命令行目录, 查看下 tesseract.exe 的命令格式

tesseract tesseract

imagename outputbase [-l lang] [-psm pagesegmode] [configfile...] 图片名 输出文件名 -l 字库文件 -psm pagesegmode 配置文件

1.2 提高 Tesseract-OCR 识别精度的方法 Tesseract-ocr 原先只是为英语文本而设计的, 后来经过努力可以实现其他 语言。但是在一些大语种语言中进展缓慢,如汉语。由之前的测试可知其对 中文的识别率不高。 在此我们利用 Tesserac-ocr 3.02 训练生成新的识别语言库, 我们找到两种 Tesseract-ocr 的训练方法:A.使用 jTessBoxEditor 工具 B.使用 CowBoxer 工具。为了能够修改中文我们选择 B. 具体过程如下: (1) 下载 cowboxer1.02.exe,notepad++ 直接就可使用 cowboxer1.02.exe 的使用方法,打开 cowboxer1.02.exe ,点击 Help-> About F1 。可以看到相关的使用方法。 (2) 获取样本图像,并生成 tif 图像 convert imagename [lang].[fontname].exp[num].tif lang 为语言名称,fontname 为字体名称,num 为序号,可以随便定义 (3) 生成 box 文件 tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] –l batch.nochop makebox 把 tif 文件和 box 文件放在同一目录下 (4)运行 cowboxer 打开 box 文件,对 box 文件进行校正 并利用 notepad++ 打开 box 文件修改错误字符 (5) 定义字体特征文件 创建一个名称为 font_properties 的字体特征文件, font_properties 不含 BOM 头, 文件内容格式如下: <fontname> <italic> <bold> <fixed> < serif> <fraktur> 其中 fontname 为字体名称, 必须与[lang].[fontname].exp[num].box 中的名称保持 一致, <italic> <bold> <fixed> < serif> <fraktur>的取值为 0 或 1, 表示字体是否具有 这些属性。 (粗体,斜体等等) 用记事本打开 font_properties 文件,输入 (6) 产生字符特征文件(*.tr) tesseract [lang].[fontname].exp[number].tif [lang].[fontname].exp[number] nobatch box.train 这一步会产生 lang.fontname.exp[number].txt; lang.fontname.exp[number].tr 为 特征文件 (7) 由*.box 文件计算字符集(unicharset) unicharset_extractor [ lang].[fontname].exp[number].box 这一步产生字符集文件 unicharset。 (8) 聚集字符特征(inttemp、pffmtable、normproto) shapeclustering -F font_properties -U unicharset [lang].[fontname].exp[number].tr mftraining -F font_properties -U unicharset -O [lang].unicharset [lang].[fontname].exp[number].tr 使用上一步产生的字符集文件 unicharset ,来生成当前新语言的字符集文件 [lang].unicharset。同时还会产生图形原型文件 inttemp 和每个字符所对应的字符

特征数文件 pffmtable,很可能也会产生另外一个 shapetabel 文件。 (9) cntraining [lang].[fontname].exp[number].tr 这一步产生字符形状正常化特征文件 normproto。 (10)把目录下的 inttemp,normproto,pffmtable,shapetable 文件前都加上前缀 rename normproto [lang].normproto rename inttemp [lang].inttemp rename pffmtable [lang].pffmtable rename shapetable [lang].shapetable (11)合并训练文件 combine_tessdata [lang]. 这是最后一步,产生训练结果文件[lang].traineddata 确认 Offset 1,3,4,5,13 这些项不是-1, 这样一个新的语言文件就生成了 (12)将生成的[lang].traineddata 移到 tesseract-ocr\tessdata 目录下 当然在生成最终的 traineddata 的过程中,我们可以先生成几个 box,并利用这几 个 box 先生成一个[lang].traineddata,再用此[lang].traineddata 生成其余的 box 文 件,中途生成的 traineddata 的目的只是为了提高文字识别的准确率,使后面生 成的 box 文件能少做修改 由于文件太多,我们可以建立批量处理文件(*.bat) 3.3 具体的实验步骤及实验结果 1.实验步骤 在生成中文训练库的试验中我们获取了 130 个图像,生成 130 个 box,先用前 60 个 box 生成一个 traineddata, 在利用此 traineddata 对之后的 70 个 box 进行修改, 并生成最终的 traineddata。 (1) 获取样本图像,建立批量处理文件 tif1.bat 生成前 60 个 tif 图像

(2) 建立批量处理文件 box1.bat,生成前 60 个 box

(3) 对 box 文件进行校正 生成的所有 tif 文件和 box 文件均放在同一目录下。 (4) 定义字体特征文件 font_properties (5) 用记事本打开 font_properties 文件,输入 font 0 0 0 0 0 (6) 建立批量处理文件 pp.bat 生成 chi.traineddata

Offset 1,3,4,5,13 这些项不是-1, 这样一个新的语言文件就生成了 (7) 把 chi.traineddata 放到 tessdata 目录下。 此为前 60 个 box 生成的,我们可用此对之后的 70 个 box 进行修改。 同样的方法先生成 tif 图像,在生成 box 文件,只是此时命令为: tesseract chi.font.exp61.tif chi.font.exp61 –l chi batch.nochop makebox …………………… tesseract chi.font.exp130.tif chi.font.exp130 –l chi batch.nochop makebox 之后在进行修改矫正,建立批量处理文件 pp.bat(须从 1 到 130) ,生成最终的 chi.traineddata。先把之前 tesseract-ocr\tessdata 目录下的 chi.traineddata 删除, 在把最终生成的 chi.traineddata 移动到 tesseract-ocr\tessdata 目录下。 2.实验 tesseract 3.jpg output –l chi


相关文章:
VS2010调用tesseract-OCR API步骤
增加指向安装目录下 lib 的 路径,比如 D: \Tesseract-OCR\lib ,以便 exe ...(); //输出到命令行中 } 然后运行文件,可以发现将识别出的文字显示在了命令...
Tesseract-OCR 介绍
它是 1995 年 UNLV 精度测试中排名前 3 的引擎之一。1995 年至 2006 年间...如何提高Tesseract-OCR的... 5页 3下载券 Web验证码的生成与识别 67页 免费...
tesseract使用方法
为了避免配置环境变量,可以先下载一个 tesseract-ocr-setup-3.02.02.exe(tesseract 配置文件夹里有),然 后安装(假设安装目录为 D:\Tesseract-OCR)。 2. 下载 ...
Tesseract_3_语言数据的训练方法
生成第一个 box 文件 演示中将 Tesseract 解压到了 E:\tesseract-ocr 目录。...中途生成 traineddata 的目的只是为了提高文字识别的准确 率,使后面生成的 box ...
Tesseract简介
Tesseract-ocr 简介 Tesseract 是 Ray Smith 于 1985 到 1995 年间在惠普布里斯托实验室开发的一个 OCR 引擎, 曾 经在 1995 UNLV 精确度测试中Tesseract-ocr ...
Tesseract3.02中文字库训练
Tesseract3.02中文字库训练_计算机软件及应用_IT/计算机_专业资料。[转]Tesseract 3.02 中文字库训练下载 chi_sim.traindata 字库 下载 tesseract-ocr-setup-3.02....
Tesseract字库训练说明
my.traineddata 便是最终生成的语言文件,将生成的 my.traineddata 拷贝到 Tesseract-OCR-->tessdata 目录下。可以用它来进行字符识别了。 ...
windows环境下编译Tesseract-OCR
windows 环境下编译 Tesseract-OCR 概述最 近要用 java 实现一个验证码识别系统,选了半天之后最终决定用 Tesseract-OCR 作为识别引擎。既然是 java+Tesseract-OCR,...
Tesseract 主要API功能介绍
unsigned char * imagedata, int int int int ) 为 Tesseract 提供待识别的..._boxes_from_boxes, tessedit_write_unlv, tessedit_create_hocr. )得到 ...
tesseract-ocr的编译
由于最近要做一个基于 Android 的 ocr 文字识别系统,搜了些资料,完成了 tesseract-ocr 的下载与编译。 ①下载 git,至于 git 是个什么软件,我现在对其了解不是...
更多相关标签: