![基于Python的识别图片中文字的工具设计与实现_第1页](http://file4.renrendoc.com/view12/M01/0E/2B/wKhkGWXxJ2uADLD3AAHmsRqhju4531.jpg)
![基于Python的识别图片中文字的工具设计与实现_第2页](http://file4.renrendoc.com/view12/M01/0E/2B/wKhkGWXxJ2uADLD3AAHmsRqhju45312.jpg)
![基于Python的识别图片中文字的工具设计与实现_第3页](http://file4.renrendoc.com/view12/M01/0E/2B/wKhkGWXxJ2uADLD3AAHmsRqhju45313.jpg)
![基于Python的识别图片中文字的工具设计与实现_第4页](http://file4.renrendoc.com/view12/M01/0E/2B/wKhkGWXxJ2uADLD3AAHmsRqhju45314.jpg)
![基于Python的识别图片中文字的工具设计与实现_第5页](http://file4.renrendoc.com/view12/M01/0E/2B/wKhkGWXxJ2uADLD3AAHmsRqhju45315.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着时代的发展和计算机的普及,现在的资料、文献、档案和书籍都逐渐地变成了数字化的模式,但是在此之前,已有的纸质资料、文献、档案和书籍的存量十分之多,以纸张作为载体来保存这些内容的话存在不少的不方便和安全隐患。纸张是无法再生的,纸张一旦损毁了,上面所记录的内容也将会丢失,而且纸张不方便传播,所以把纸质资料转化为电子化的形式是非常有必要的。光学字符识别(Optical Character Recognition, OCR)是一种能把印刷在或者写在纸上的内容识别成字符并保存到计算中去的技术,在文字录入、书籍电子化这些领域起着至关重要的作用。在OCR进行识别的时候,存在着一些影响识别成功率的因素,例如图像文件的背景和所识别字符的字体等因素。本文将研究通过图像文件的预处理和训练字库来提升识别的成功率。本次课题所研究的内容主要包括如下内容:(1)开发一个基于Python的OCR工具。(2)通过把图片进行灰度化处理、二值化处理和降噪处理减少图像内背景和非字符的干扰,提高识别准确率。(3)训练字库,使得开发的OCR工具在提高识别的准确率的同时还能够识别除了一般的印刷字体外其他的字体和字符内容。关键词:OCR技术;信息化;纸质资料;文字录入;灰度化处理;二值化处理AbstractWiththedevelopmentoftheeraandthepopularityofcomputers,data,literature,archivesandbooksarenowgraduallyturnedintodigitalforms.Butbeforethat,therehasbeenagreatnumberofpaperdata,literature,archivesandbooks.Therearemanyinconveniencesandsecurityrisksinusingpaperasthecarriertopreservethesecontents.Paperisnotregenerated.Oncethepaperisdamaged,thecontentsrecordedonitwillbelost,andthepaperisnotconvenientforspreading,soit’snecessarytoconvertpaperdataintoelectronicforms.OpticalCharacterRecognition(OCR)isatechnologythatcanrecognizetheprintedorwrittencontentintocharactersandsavethemtocalculation.Itplaysanimportantroleinthefieldsoftextinputandelectronicbooks.WhenOCRisusedforrecognition,therearesomefactorsaffectingthesuccessrateofrecognition,suchasthebackgroundofimagefileandthefontoftherecognizedcharacters.Thispaperfocusesontheimprovementofthesuccessrateofrecognitionbypreprocessingimagefileandtrainingfontlibrary.Theresearchcontentofthisprojectmainlyincludes:(1)DevelopingaPython-basedOCRtool.(2)Reducingsuchinterferencefactorsasthebackgroundandthefontoftherecognizedcharactersintheimagethroughgrayscaleprocessing,binarizationprocessingandnoisereductionprocessingtoimprovetheaccuracyofrecognition.(3)TrainingthefontlibrarytoimprovetheaccuracyofrecognitionandmakeitpossibleforthedevelopedOCRtooltorecognizedspecialfontsandcharactersinadditiontogeneralprintedfonts.Keywords:OCRtechnology;informatization;paperdata;textinput;grayscaleprocessing;binarization;binarizationprocessing目录第一章绪论 第一章绪论随着时代的不断发展,科学技术的不断进步,计算机和网络已经走进了千家万户,在人们的日常生活中起到了重要的作用,人类已经进入了信息化时代了。在信息化时代里,已经有不少的书籍、档案都已经从纸质载体中转变成了数字化的模式,但仍有许多纸质资料和文献未能实现数字化,把它们由纸质转变为数字化对文献和资料的保存有着重要的意义,本文将分析识别图片中文字技术的现状和存在的问题,以及对本文的内容安排进行概述。1.1项目研究的背景及意义1.1.1图片中文字的识别工具的研究背景 目前,大部分的档案、资料和书籍都是以纸质存档的形式进行保存,但是以纸张作为载体的形式存在很多的不足,纸质档案容易损坏,无法再生且不方便调用。随着信息化技术的快速发展和计算机的普及,各种各样信息都逐渐电子化,不少的纸质档案、资料和文献也都转变成电子化的形式进行保存,但是由于纸质文档存在的数量众多,且电子化录入的工作量大,仍存在着许多的纸质文档未能实现电子化的保存。因此,能够快速准确地将文字信息录入到计算机等各类电子设备之中便成为了纸质文档的录入工作解决的关键。1.1.2图片中文字的识别工具的研究意义把资料从纸质转化为电子化的过程中,需要把纸上所记录的内容录入到计算机里面,但是由于现存的纸质资料、文献的数量众多,以人工的方式进行录入的话,这样不仅要花费大量的人力和时间。OCR技术的英文全名称为Optical Character Recognition,即为光学字符识别技术,它是利用光学和计算机技术来识别印刷或写在纸上的字符,并将它们转换成计算机可以接受和人们可以理解的格式,该技术可以大大减少纸质文档录入的工作量,使得文档从纸质转为电子化更加的快速和方便。在实现难度上,汉字字符的识别相对于英文字母的识别要更加困难,大部分的汉字的不仅笔画较多且复杂还存在着形态相近的笔画,形态也比英文字母要多。在1980年时,国家标准总局所发布的《信息交换用汉字编码字符集》(GB2312-80)中,基本集共收入汉字6763个,其中在日常生活中出现频率比较高的一级汉字3755个,出现频率较低的二级汉字有3008个。汉字的数量和复杂度大大提升了识别难度。1.2国内外研究现状1.2.1国外研究现状在60年代时,光学字符识别技术就已经受到人们的关注,世界各国开始对该技术进行研究了,在研究刚开始的阶段,主要的研究内容是OCR技术识别的方法,识别的对象也只是简单的数字。OCR的技术发展可以分为三个阶段,第一阶段为60年代初,第一阶段的OCR产品只能识别指定字体的数字、英文字母及部分符号;第二阶段是60年代中期到70年代初期,该阶段的OCR产品能识别手写体字符,并且广泛应用到了现实当中;第三阶段的OCR技术主要解决对于质量较差的文档和大字符集的识别[1],还提升了识别的速度和准确率。1.2.2国内研究现状在文字识别技术方面,由于国外起步比国内要早,所以国内在OCR技术研究方面相对比较落后,在70年代的时候才开始对一些比较简单的字符识别进行研究,例如数字、英文字母和符号,并没有对中文字符的识别进行研究,直到了70年代末才开始进行汉字识别的研究,到了1986年,我国提出国家高技术研究发展计划(863计划),汉字识别的研究正式进入一个实质性阶段,我国也推出了一些中文识别的OCR产品,但是由于当时还处于研究初期,技术还不够成熟等原因,使得所推出的产品在识别的准确率等多种因素上还不能达到使用的要求。随着OCR技术的不断成熟和发展,OCR技术现在已经运用到了我们的日常生活中了。1.3论文主要研究内容和框架结构1.3.1论文主要研究内容本文主要研究的内容是使用Python语言结合一些模块来进行开发,使用jTessBoxEditor来训练字库,使得该工具可以支持不同的字体。(1)确定该工具要实现的主要功能。(2)确保该工具文字识别的准确率。1.3.2论文的主要框架结构本论文主要研究内容为一个基于Python的识别图片中文字的工具设计与实现,全文分为七章。第一章:介绍基于Python的识别图片中文字的工具的研究背景和意义,光学字符识别(Optical Character Recognition, OCR)在国内外研究现状,识别图片中文字工具所存在的问题和不足,并阐述论文的总体结构。第二章:基于Python的识别图片中文字的工具技术介绍第三章:项目的设计思路和构想第四章:图像文件的预处理原理和实现第五章:项目开发与实现第六章:训练样本库第七章:总结与展望1.4本章小结在本章中阐述了本课题的研究背景、OCR的发展历史,对比了国内外的研究现状以及本课题的研究意义,还介绍了本次课题的研究内容以及对本篇文章的主要内容进行了归纳。
第二章基于Python的识别图片中文字的工具技术介绍2.1图像预处理2.1.1关于图像灰度化图像预处理的目的是改善图像数据,抑制不需要的变形和增强某些对于后处理有重要作用的图像特征[3]。在我们平时接触到的彩色图片中,大部分都是采用红、绿、蓝三个颜色通道变化和这三个颜色互相之间的叠加来得到各种各样的颜色,这是目前运用最多的的颜色系统,也叫做RGB颜色模式。RGB并不能反映图像的形态和特征[2],在识别图片中的文字之前,需要对图片进行预处理,这样可以减少一些干扰,让特征更加明显,提升识别的正确率。灰度图(greyscaleimage)又称灰阶图,是一幅只含亮度信息,不含色彩信息的图像,与原彩色图像比较,它只有一个通道,图像中每个像素其实就是亮度值(Intensity),这样图像处理计算量也相应大幅减少[4]。在RGB模型,只要把图像中的R、G、B都取相同的值,就可以实现图像的灰度化处理,且R=G=B的值叫做灰度值,灰度值越大,所得的灰度值也会越大,像素颜色趋于白色,反之则趋于黑色。[1]图1-1图像灰度化处理2.1.2图像灰度化的四种方法(1)分量法将彩色图片中的三分量RGB的亮度的作为三个灰度值,然后根据需要来选取合适的一个灰度值。即Gray(i,j)=R(i,j)(1)Gray(i,j)=G(i,j)(2)Gray(i,j)=B(i,j)(3)(2)最大值法使用彩色图片中三分量亮度最大的作为灰度值,即Gray(i,j)=max{R(i,j)G(i,j)B(i,j)}(4)(3)平均值法将彩色图像中的三分量亮度求平均得到一个灰度值。即Gray(i,j)=(5)(4)加权平均法根据所需要提取特征的重要性及其它指标,把RGB三个分量以不同的权值来进行加权平均计算。因为人的眼睛对绿色的敏感度最高,对蓝色敏感度最低,所以,按下式对RGB三分量进行加权平均计算能得到比较合理的灰度图像。[5]Gray(i,j)=0.299*R(i,j)+0.5782.2图像的二值化及使用工具(1)关于图像二值化在二值化图像中只有黑和白两种灰度,即图像中所有像素的RGB值为:白(255,255,255),或黑(0,0,0)。图像二值化的本质就是图像分割,其原理是利用所需要分割的目标与背景在灰度特性上的差异进行提取。含有文字的图像在经过灰度化处理和二值化处理之后,可以去除多余的像素,使得其中的文字更加突出,这样的图像对使用文字识别工具时的准确率有很大的提升。图2-1图像的二值化处理(2)开源的OCR工具Tesseract-OCRTesseract最初是由HP在1980年代开始研发的,在1995年时,Tesseract发展成为了最准确的OCR识别引擎之一[6],但是HP却放弃了OCR的业务,直到2005年Tesseract开源了,后来Google赞助了该项目,并对Tesseract进行了优化改进,如今Tesseract已经支持超过100种书面语言,使用者可以根据自己的使用需求,对Tesseract进行针对性的训练,并进行扩展[7]。(3)jTessBoxEditor训练样本jTessBoxEditor是一个用Java开发出来用来训练OCR识别样本的工具,通过使用该工具训练样本可以使Tesseract识别所训练的语言和字体,并可以通过训练样本来提升识别的准确率。2.3本章小结在本章中,简单地介绍了整个系统实现的步骤以及图像灰度化的几种方法的和图像二值化处理的原理以及效果展示,并介绍了本次课题所需要使用到的核心工具。第三章项目设计思路和构想3.1软件设计思路3.1.1开发语言本次课题所使用的开发语言为Python,Python是由荷兰人吉多·范罗苏姆所开发的一款跨平台的程序开发语言,是一个高层次的结合了编译性、解释性、互动性和面向对象的脚本语言,Python提供了十分完善的基础代码库,这使得在进行开发的时候许多功能不需要从头开始写,直接使用现成的即可。除此之外,Python还有许非官方的第三方库,这些库是由其他开发人员或组织提供的开源库,可以根据自己的开发需要直接使用第三方库,同时也可以把自己所开发的代码作为第三方库供他人使用。3.1.2开发所用的库(1)PILPIL(PythonImagingLibrary)是计算机程序设计语言Python的图像处理标准库,具备图像加载、转换、滤波等基本功能[8],不但拥有着强大的图像处理功能而且使用人数众多,几乎被认为是Python的官方图像处理库。其中Image类是PIL库里的核心类,它可以从文件中载入一个图像文件,也可以创建一个新的图像,还能对载入或者创建的图像进行裁剪、旋转翻转、保存为指定格式、颜色通道的分离和合并等操作。(2)pytesseractpytesseract是对Tesseract-OCR的一层封装,用于Python的光学字符识别(OCR)工具,它可以读取并识别图像中的字符,再以文本的形式输出,但是图像不经过处理直接使用该工具识别的话效果并不理想。(3)PyQt5PyQt是基于高性能的Qt的GUI控件集,是Qt框架在Python上的实现,它能够跨平台运行在Windows、Linux和MacOS操作系统上,是GUI库里比较强大的一个库。(4)OpenCVOpenCV是一个跨平台计算机视觉库,其中包含了对于计算机操作系统和计算机语言编程平台支持的API接口以及源码库[9],该库为开源的项目,它的源代码可以根据自己的需要进行修改。3.1.3系统功能需求OCR是为了把图片中的文字以文本形式进行输出或保存,需要有友好的操作界面供用户使用,用户可以自行选择并打开所需要识别的图片,在识别完成后以文本形式进行输出,此时用户可以直接在输出的文本中对识别错误的文字进行修改。(1)对识别字符的要求我们日常生活中最常见的字符有几种,分别为英文字母、数字、标点符号和中文字符,所以必须支持这三种字符的识别,并且准确率要能达到较高的水平。(2)对准确率的要求由于图片内可能会出现其他非字符的内容,例如背景、图案等其他内容,所以要对图片进行预处理,把图片上的这些非字符的干扰物去除掉再进行文字识别,提高识别的准确率。除此之外,还要尽量还原图片中文字的段落和格式。(3)识别效率识别的处理过程要尽可能的短,从输入到输出整个处理过程的时间不能太长,否则无法达到通过文字识别提高工作效率的作用。3.2应用运行流程该应用运行主要分为图片输入、图片灰度化处理、图片二值化处理、文字识别、输出文本五个步骤,流程图如图3-1所示。图3-1运行流程图3.3本章小结本章具体介绍了本次课题所需要是用的工具和各个模块的使用,并把整个系统的流程进行了划分成图片输入、图片灰度化处理、图片二值化处理、文字识别、输出文本五个步骤。第四章图像文件的预处理原理和实现4.1图像文件的预处理灰度化处理的三种方法以及代码实现(1)最大值灰度处理方法图像灰度化处理的最大值法是把灰度值设为彩色图片中R、G、B的三个分量之中的最大值,公式如下:Gray(i,j)=max{R(i,j)G(i,j)B(i,j)}通过该方法进行灰度化处理后,灰度图的亮度会很高,效果如图4-1(a)所示,实现代码如图4-1(b)所示:图4-1(a)最大值灰度处理图4-1(b)最大值灰度处理核心代码(2)平均灰度处理方法平均灰度处理方法即是把原本彩色图片的R、G、B三个分量的灰度值求和再求平均值,然后把得出的值作为灰度值,计算公式如下所示:Gray(i,j)=(通过该方法处理过后的彩色图片效果如图4-2(a),实现代码如图4-2(b)所示:图4-2(a)平均灰度处理法图4-2(b)平均灰度处理法核心代码(3)加权平均灰度处理方法根据所需要提取特征的重要性及其它指标,把RGB三个分量以不同的权值来进行加权平均计算。计算公式如下所示:Gray(i,j)=0.299*R(i,j)+0.578处理结果如图4-3(a)所示,实现代码如图4-3(b)所示:图4-3(a)加权平均灰度处理法图4-3(b)加权平均灰度处理法核心代码4.1.2图像文件的二值化处理图像在经过灰度化处理后,还要进行二值化处理。进行二值化处理需要选定一个特定的阈值量,这里我选择的阈值为127,二值化即是把图像内大于等于阈值量的像素点的灰度值设置为最大值255,而小于阈值127的像素点的灰度值则设置为0,二值化效果如图4-4(a)所示,代码实现如图4-4(b)所示:图4-4(a)图像二值化处理图4-4(b)二值化处理核心代码4.1.3图像文件的降噪处理经过了灰度化和二值化处理后的彩色图片,它的背景已经几乎无法辨认,变成了一些零散的像素点,接下来则需要对图片进行降噪处理,图像噪声是指图像数据中含有的不必要的或者冗余[10]。的干扰信息。此处使用的是八邻域降噪的方法,八邻域降噪的前提是要把彩色的图像先进行灰度化处理,这里就可以直接使用经过灰度化和二值化处理过后的图片进行降噪,八邻降噪法的降噪原理是依次遍历已经经过灰度化和二值化处理的图像文件中的所有不是白色的像素点,然后再计算在这个非白色的像素点周围八个点中不是白色的像素点的数量,如果周围的非白色像素点小于一个固定的值,那么这个白色的像素点则被视为噪点,并进行降噪处理,但是这个固定的值需要按情况来进行设置,如果这个值设置得过大则会导致把非噪点的像素点也进行降噪,如果设置过小的话,降噪效果则会不理想。降噪效果如图4-5(a)所示,实现代码如图4-5(b)所示,从下面的途中可以明显的发现,除了文字以外的多余的像素点已经被消去了许多,即是还存在一些干扰,但是跟没有降噪之前的干扰相比,已经降低了不少了。图4-5(a)图片降噪处理图4-5(b)降噪处理核心代码4.2本章小结本章介绍了图片的预处理以及使用Python语言来实现,展示了各个处理的实现原理以及实现代码,并把处理后的效果图与未进行处理的图像进行了比较,可以更加直观的看出处理过后的图片关键的信息变得更加明显。第五章项目开发与实现5.1前期工作(1)安装Python3.5直接进入Python的官网中的下载页面中,选择适合计算机系统的版本进行下载,下载完成后进行安装。安装完成后,还需要进行环境变量的配置,如图5-1所示:图5-1环境变量的配置在完成环境变量的配置后打开cmd,输入python出现如图5-2所示信息即说明Python3.5安装成功并能够正常使用。图5-2python3.5安装成功(2)安装Tesseract-OCR进入Tesseract的官方网站中选择适合计算机版本的Tesseract-OCR进行下载并安装,安装完成后进行环境变量配置,打开cmd输入tesseract出现如图5-3所示信息就表明Tesseract-OCR安装成功并且能够正常使用。图5-3tesseract安装成功(3)IDE和程序所需要使用的模块的安装IDE使用的是Pycharm,Pycharm拥有代码调试、语法高亮、智能提示等功能,这使得用户大大提高了Python开发的效率,而且还能直接在项目里安装所需要用的模块。在安装好Pycharm后,新建项目可以在设置中看到已有的模块,可以根据自己的需要安装新的模块,如图5-4所示,本次主要使用到的模块包括:Pillow、PyQt5、pytesseract、OpenCV。图5-4模块的安装5.2应用功能实现5.2.1界面设计与介绍为了方便使用,本应用使用PyQt5来开发一个简洁且功能齐全应用程序界面,通过简单的操作,就能够实现把图片中的文字转化为文本的形式。如图5-5所示:图5-5应用主界面设计界面中提供使用者打开图片文件的按钮,使用者只需通过单击应用程序界面上的“浏览”按钮来打开文件选择器,就可以从文件选择器选择所需要识别的图片文件,点击打开后即可完成文件选择。如图5-6所示:图5-6文件选择器通过点击界面上方的菜单栏中的设置按钮可以选择用来识别的样本库,不选择则为使用默认的样本库,从界面的右下角可以看到当前所使用的样本库。如图4-7所示:图5-7选择样本库5.2.3应用界面关键代码介绍(1)应用界面窗口的编写新建Python文件AppUi.py,在应用界面窗口编写前,需要对PyQt5里所需要用到的QtCore、QtGui、QtWidgets等模块进行导入图5-8导入模块使用setGeometry()函数创建一个显示在屏幕上(300,300)的位置上,宽为600高为800的窗口,并把宽和高设置为固定大小。用setWindowTitle()函数把窗口的标题设置为“图文识别工具”。代码如图5-8所示:图5-9窗口的创建(2)给应用界面添加控件根据功能的使用需求,需要在窗口界面上添加菜单栏、状态栏、按钮、文本显示框和文本编辑框控件。使用QHBoxLayout()方法设置水平布局,在水平方向上排列控件,使用QTextBrowser()新建一个文本显示框,用来显示所选择的图片文件的绝对路径;使用QPushButton()创建“浏览”和“开始”按钮,“浏览”按钮用于打开文件选择器,设置选择文件类型为图片文件,“开始”按钮用于把所选的图片传递到后端进行处理;使用QTextEdit()方法创建一个文本编辑框,用于显示图片经后台处理后返回的结果,并可以直接在文本编辑框内对识别有误的文字进行编辑。最后使用addWidget()方法把上面所创建的控件添加到窗口上面去,并通过setGeometry()函数来设置控件的位置和大小。具体代码如图5-10(a)和5-10(b)所示:图5-10(a)控件的创建和添加部分代码图5-10(b)控件的创建和添加部分代码5.2.4应用界面菜单栏、状态栏的设置和控件功能实现(1)菜单栏和状态栏的设置菜单栏是GUI应用程序的通用组件。menuBar()方法可以创建了一个菜单栏,并使用addMenu()在菜单栏上创建了“文件”按钮、“设置”按钮和“关于”按钮,用addAction()方法在“文件”菜单下添加了打开、保存、和退出行为。具体代码如图5-11所示:图5-11菜单栏在应用界面上添加完控件后需要给控件进行配置,使得控件能够实现所需要的功能,菜单栏的按钮使用triggered.connect()方法来设置点击事件如图4-11所示,各个按钮所连接到的事件如图5-12所示;点击“浏览”按钮后,执行QFileDialog()打开文件选择器,getOpenFileName()设置文件扩展名过滤,只能选择打开图像文件,并用来获取所打开文件的文件类型和绝对路径;然后使用QTextBrower()的setText()把获取到的文件名显示在textBrowser上;点击菜单栏的“设置”选择“选择样本库”同样也是通过QFileDialog()打开文件选择器,但是文件扩展名过滤则是设置为只能打开扩展名为.traineddatad训练样本文件,然后把所选择的样本通过shutil.copy()放到Tesseract-OCR的tessdata文件夹下,并把样本参数YB改为所选的样本传到后端进行使用。当后台返回识别结果为空时则会弹出警告提示框。图5-12按钮点击事件5.2.5使用pytesseract的模块进行文字识别测试在完成了应用程序界面的设计和开发后,下一步则是要把应用程序的前端界面和后端的功能进行对接。在应用程序的界面中完成了图像文件的选择,再开始识别之前,需要把所选的图像文件传到后台进行图像预处理,当点击“开始”按钮时,图像文件将会被传到yuchuli.py文件下的processing()中,此时该图像文件将被进行灰度化和二值化处理。经过了灰度化和二值化处理之后,把得到的图像文件保存到目录下的temp文件夹当中并return该文件所在位置的绝对路径,在获取到经过灰度化和值化处理后的文件路径后,再把该路径传到jiangzao.py文件下的noise_remove()当中进行降噪,当所有步骤完成后,最后再把处理完成后的图片使用pytesseract模块进行文字识别,如图5-13所示,把得到的字符串显示到应用程序界面上,演示图片如图5-14所示,结果如图5-15所示:图5-13pytesseract的使用图5-14演示图片图5-15文字识别上面的演示所使用的是tesseract官方的中文样本库,由上面的演示结果可以得出,虽然图片经过了预处理之后再进行识别,但是识别的准确率依旧是并不理想,原因是因为所使用的演示图像文件中的字体并不是一般系统所使用的字体,而是一种手写字体,所以部分文字未能够正确的识别出来,对于这种特殊的字体想要提高准确率就要使用jTessBoxEditorFX来训练一个专用的字库用来进行识别。第六章训练样本库6.1jTessBoxEditorFX的安装和使用jTessBoxEditorFX的安装和运行环境的配置(1)jTessBoxEditorFX的下载到官方网站中下载jTessBoxEditorFX,jTessBoxEditorFX下载下来的是一个压缩包,不需要进行安装,直接解压就能使用。解压后如图6-1所示:图6-1jTessBoxEditorFX解压后(2)Java的安装和环境变量的配置进入Java的官网,选择符合所使用操作系统的版本进行下载并安装,在安装完成后需要进行环境变量的配置如图6-2和6-3所示:图6-2Java环境变量配置图6-3Java环境变量配置在环境变量配置完成后,打开cmd,输入java和javac出现如图6-4和6-5所示内容即表示Java正确安装并且能够使用图6-4cmd输入java图6-5cmd输入javac6.1.2使用jTessBoxEditorFX进行样本训练在进行训练之前,需要先把将要训练的样本进行处理,本次所使用的是图像文件来作为样本,所以先要把该图像文件转换为tif格式的图像文件,打开jTessBoxEditorFX,点击界面菜单栏的Tools选择MergeTiff...,然后选择需要训练的图像文件,如图6-6所示:图6-6选择所需训练图像点击打开后,继续选择所需要保存到的目录,并输入生成后的文件名字,如图6-7所示:图6-7保存目录点击保存后,会弹出如图6-8所示的提示窗口,此时表示已成功把原本图像转化为tif格式的文件,打开所选的保存目录即可看到生成的tif文件如图6-9所示。图6-8成功弹窗图6-9tif文件所在目录生成了tif文件之后,还要使用tesseract生成对应tif文件的box文件,打开tif所在的目录下,在地址栏输入cmd,然后在cmd中输入tesseracttest.tiftest-lchi_sim--psm7batch.nochopmakebox就可以生成与该tif文件所对应的box文件,如图6-10所示:图6-10生成box文件完成以上步骤后,选择可以使用jTessBoxEditorFX来对生成的tif文件中的文字内容进行校正,在BoxEditor中点击Open按钮,选择之前生成的tif文件,如图6-10所示:图6-11选择tif文件打开tif文件后,jTessBoxEditorFX会自动关联上一步骤所生成的box文件,然后可以在jTessBoxEditorFX中看到该图像文件上面所识别出来的字符所在位置和内容,如图6-12所示:图6-12打开tif文件由图6-12可以看出,系统所识别出来的文字无论是位置还是内容,都是不准确的,所以需要手动进行校正,校正后的效果如图6-13所示:图6-13文字校正在完成文字内容和位置的校正后,点击上方的save进行保存,保存完成后,点击上方的Trainer,然后把TesseractExecutables设置为Tesseract-OCR的安装目录,TrainningData选择刚刚tif所在的文件夹TrainningMode选择TrainwithExistingBox,最后点击run,jTessBoxEditorFX将会把校正后的文字位置和内容进行处理,并生成.traineddata文件,如图6-14所示:图6-14完成样本训练6.1.3测试样本效果(1)手写字体效果测试本次测试分别使用官方的中文字库和上述完成的csb训练样本来进行比较,官方字库的测试结果如图6-15,训练字库测试结果如图6-16所示:图6-15官方字库测试结果图6-16csb训练样本测试结果(2)特殊字体测试为了验证jTessBoxEditorFX可以对任意字体的文字进行训练,并达到较高的识别准确率,还进行了对一种比较潦草的字体进行了训练,测试图片如图6-17,测试结果如图6-18所示:图6-17测试图片图6-18测试结果(3)测试总结由上面两组测试结果的图片可得知,在使用训练的字库来进行识别的话准确率要比官方的字库要高得多,而且从上面展示的结果来看,如果是针对一个图像文件的训练样本用来识别该图像,准确率几乎能够达到百分之百。6.2本章小结本章详细介绍了使用jTessBoxEditorFX工具来训练字库,以及展示了使用训练的字库和官方的中文字库进行识别的效果,由此得出在图像中的文字如果不是一般常见的印刷字体的话需要通过训练字库才能获取较好的识别效果。第七章总结与展望7.1总结经过几个月的努力,本次课题的研究和开发已经接近尾声了,在完成本次的毕业课题的课程中,我了解到了许多新的知识,开拓了我的视野。本次的课题是基于Python的识别图片中文字的工具设计与实现,使用的是Python来进行开发,由于本课题涉及到了不少图像处理的相关知识,因此,我查阅了不少的文献,也从中学到了很多新的知识,同时,在完成本次开发的过程中,个人的编程开发水平也得到了提高。虽然本次课题的基本功能都已实现,但是文字识别的准确率还是相当有限的,想要实现高的识别率需要花费大量的时间进行训练字库和文字校正,且在一些场景复杂的场景当中,想要获取到清晰的文字内容也需要进行大量的图像处理。7.2展望在信息化的时代里,各种各样的数据都逐渐的转化成为电子化的信息,而现存纸质资料和数据在未来也将会录入到计算机之中来保存,OCR技术在以后数据录入的环节中起到了至关重要的作用,虽然现在的OCR技术已经非常成熟了,居然很高的准确率和识别效率,但是仍然没有能够达到百分百的准确率,随着科技的不断发展,相信在不久的将来OCR技术将会更上一层楼。参考文献[1]谢飞.纸质目录卡片的数字化转换及MapReduce并行处理[D].湖南:国防科学技术大学,2015.[2]张伟超,肖中俊,严志国.基于Opencv和Tesseract的行驶证识别系统设计[J].齐鲁工业大学学报,2020,34(1):47-52.DOI:10.16442/ki.qlgydxxb.2020.01.009.[3]刘保安.基于MATLAB的车牌图像预处理应用[J].电脑迷,2019(2):11,13.[4]陈碗平.灰度指纹图像增强[D].江苏:南京理工大学,2006.DOI:10.7666/d.y1001076.[5]刘海波,吴昊.基于OpenCV的图像处理[J].计算机光盘软件与应用,2014,(9):195-195,197.[6]刘永春.基于SVM的车牌字符识别算法研究[J].四川理工学院学报:自然科学版,2012,25(4):46-49.DOI:10.3969/j.issn.1673-1549.2012.04.013.[7]张淙悦,尹梓名,孙大运,等.基于Tesseract的医学化验单内容识别技术[J].北京生物医学工程,2019,38(3):283-289.DOI:10.3969/j.issn.1002-3208.2019.03.011.[8]杨琰皓.Python使用PIL库识别条码及其可译码度的研究[J].中国自动识别技术,2019,(1):68-71.DOI:10.3969/j.issn.1673-6362.2019.01.013.[9]邹富,周俊,范倩蓝,等.基于UPSquared的OpenCV物体图像识别应用[J].电子测试,2019,(22):62-63.[10]郭室驿.基于OpenCV和Tesseract-OCR的英文字符算法研究[J].电脑编程技巧与维护,2019,(6):45-49.DOI:10.3969/j.issn.1006-4052.2019.06.017.致谢不知不觉,大学生活已经来到了第四年的最后阶段了,回想这四年的大学生活,能够一路顺利走来少不了学校老师以及同学的教导和帮助,对此,我表示衷心的感谢。我还要特别感谢我的导师,范波老师,从毕设的选题到最后顺利的完成都离不开导师的悉心教导,在整个过程中都给予了我很大的帮助,无论是在我开发还是写作的过程中遇到的任何困难时,我的导师总能很有耐心并且十分重视地协助我解决困难。其次,我也很感谢我所有的老师在这几年对我的悉心教导。在东软的四年学习中,我从他们的课程中学到了很多有用的理论,为完成本次毕业设计打下了坚实的基础。我要衷心感谢我的父母和姐姐,在这二十多年来对我无条件的照顾和帮助,尤其是我的父母,他们含辛茹苦地培养我长大,把全部的积蓄都用来供我读书。最后,再次向这么多年帮助过我的老师和同学表示最真挚的感谢。附录
电脑故障检测卡代码表
1、特殊代码"00"和"ff"及其它起始码有三种情况出现:
①已由一系列其它代码之后再出现:"00"或"ff",则主板ok。
②如果将cmos中设置无错误,则不严重的故障不会影响bios自检的继续,而最终出现"00"或"ff"。
③一开机就出现"00"或"ff"或其它起始代码并且不变化则为主板没有运行起来。
2、本表是按代码值从小到大排序,卡中出码顺序不定。
3、未定义的代码表中未列出。
4、对于不同bios(常用ami、award、phoenix)用同一代码代表的意义不同,因此应弄清您所检测的电脑是属于哪一种类型的bios,您可查阅您的电脑使用手册,或从主板上的bios芯片上直接查看,也可以在启动屏幕时直接看到。
5、有少数主板的pci槽只有一部分代码出现,但isa槽有完整自检代码输出。且目前已发现有极个别原装机主板的isa槽无代码输出,而pci槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。另外,同一块主板的不同pci槽,有的槽有完整代码送出,如dell810主板只有靠近cpu的一个pci槽有完整代码显示,一直变化到"00"或"ff",而其它pci槽走到"38"后则不继续变化。
6、复位信号所需时间isa与pci不一定同步,故有可能isa开始出代码,但pci的复位灯还不熄,故pci代码停要起始代码上。
代码对照表
00.已显示系统的配置;即将控制INI19引导装入。
01处理器测试1,处理器状态核实,如果测试失败,循环是无限的。处理器寄存器的测试即将开始,不可屏蔽中断即将停用。CPU寄存器测试正在进行或者失败。
02确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。停用不可屏蔽中断;通过延迟开始。CMOS写入/读出正在进行或者失灵。
03清除8042键盘控制器,发出TESTKBRD命令(AAH)通电延迟已完成。ROMBIOS检查部件正在进行或失灵。
04使8042键盘控制器复位,核实TESTKBRD。键盘控制器软复位/通电测试。可编程间隔计时器的测试正在进行或失灵。
05如果不断重复制造测试1至5,可获得8042控制状态。已确定软复位/通电;即将启动ROM。DMA初如准备正在进行或者失灵。
06使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。已启动ROM计算ROMBIOS检查总和,以及检查键盘缓冲器是否清除。DMA初始页面寄存器读/写测试正在进行或失灵。
07处理器测试2,核实CPU寄存器的工作。ROMBIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。.
08使CMOS计时器作初始准备,正常的更新计时器的循环。已向键盘发出BAT命令,即将写入BAT命令。RAM更新检验正在进行或失灵。
09EPROM检查总和且必须等于零才通过。核实键盘的基本保证测试,接着核实键盘命令字节。第一个64KRAM测试正在进行。
0A使视频接口作初始准备。发出键盘命令字节代码,即将写入命令字节数据。第一个64KRAM芯片或数据线失灵,移位。
0B测试8254通道0。写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。第一个64KRAM奇/偶逻辑失灵。
0C测试8254通道1。键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。第一个64KRAN的地址线故障。
0D1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。已处理NOP命令;接着测试CMOS停开寄存器。第一个64KRAM的奇偶性失灵
0E测试CMOS停机字节。CMOS停开寄存器读/写测试;将计算CMOS检查总和。初始化输入/输出端口地址。
0F测试扩展的CMOS。已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。.
10测试DMA通道0。CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。第一个64KRAM第0位故障。
11测试DMA通道1。CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。第一个64DKRAM第1位故障。
12测试DMA页面寄存器。停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。第一个64DKRAM第2位故障。
13测试8741键盘控制器接口。视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。第一个64DKRAM第3位故障。
14测试存储器更新触发电路。电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。第一个64DKRAM第4位故障。
15测试开头64K的系统存储器。第2通道计时器测试了一半;8254第2通道计时器即将完成测试。第一个64DKRAM第5位故障。
16建立8259所用的中断矢量表。第2通道计时器测试结束;8254第1通道计时器即将完成测试。第一个64DKRAM第6位故障。
17调准视频输入/输出工作,若装有视频BIOS则启用。第1通道计时器测试结束;8254第0通道计时器即将完成测试。第一个64DKRAM第7位故障。
18测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。第0通道计时器测试结束;即将开始更新存储器。第一个64DKRAM第8位故障。
19测试第1通道的中断控制器(8259)屏蔽位。已开始更新存储器,接着将完成存储器的更新。第一个64DKRAM第9位故障。
1A测试第2通道的中断控制器(8259)屏蔽位。正在触发存储器更新线路,即将检查15微秒通/断时间。第一个64DKRAM第10位故障。
1B测试CMOS电池电平。完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。第一个64DKRAM第11位故障。
1C测试CMOS检查总和。.第一个64DKRAM第12位故障。
1D调定CMOS配置。.第一个64DKRAM第13位故障。
1E测定系统存储器的大小,并且把它和CMOS值比较。.第一个64DKRAM第14位故障。
1F测试64K存储器至最高640K。.第一个64DKRAM第15位故障。
20测量固定的8259中断位。开始基本的64K存储器测试;即将测试地址线。从属DMA寄存器测试正在进行或失灵。
21维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。通过地址线测试;即将触发奇偶性。主DMA寄存器测试正在进行或失灵。
22测试8259的中断功能。结束触发奇偶性;将开始串行数据读/写测试。主中断屏蔽寄存器测试正在进行或失灵。
23测试保护方式8086虚拟方式和8086页面方式。基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。从属中断屏蔽存器测试正在进行或失灵。
24测定1MB以上的扩展存储器。矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。设置ES段地址寄存器注册表到内存高端。
25测试除头一个64K之后的所有存储器。完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。装入中断矢量正在进行或失灵。
26测试保护方式的例外情况。读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。开启A20地址线;使之参入寻址。
27确定超高速缓冲存储器的控制或屏蔽RAM。全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。键盘控制器测试正在进行或失灵。
28确定超高速缓冲存储器的控制或者特别的8042键盘控制器。完成中断矢量之后的初始准备;即将调定单色方式。CMOS电源故障/检查总和计算正在进行。
29.已调定单色方式,即将调定彩色方式。CMOS配置有效性的检查正在进行。
2A使键盘控制器作初始准备。已调定彩色方式,即将进行ROM测试前的触发奇偶性。置空64K基本内存。
2B使磁碟驱动器和控制器作初始准备。触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。屏幕存储器测试正在进行或失灵。
2C检查串行端口,并使之作初始准备。完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。屏幕初始准备正在进行或失灵。
2D检测并行端口,并使之作初始准备。已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。屏幕回扫测试正在进行或失灵。
2E使硬磁盘驱动器和控制器作初始准备。从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。检测视频ROM正在进行。
2F检测数学协处理器,并使之作初始准备。没发现EGA/VGA;即将开始显示器存储器读/写测试。.
30建立基本内存和扩展内存。通过显示器存储器读/写测试;即将进行扫描检查。认为屏幕是可以工作的。
31检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。单色监视器是可以工作的。
32对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。彩色监视器(40列)是可以工作的。
33.视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。彩色监视器(80列)是可以工作的。
34.已检验显示器适配器;接着将调定显示方式。计时器滴答声中断测试正在进行或失灵。35.完成调定显示方式;即将检查BIOSROM的数据区。停机测试正在进行或失灵。
36.已检查BIOSROM数据区;即将调定通电信息的游标。门电路中A-20失灵。
37.识别通电信息的游标调定已完成;即将显示通电信息。保护方式中的意外中断。
38.完成显示通电信息;即将读出新的游标位置。RAM测试正在进行或者地址故障>FFFFH。
39.已读出保存游标位置,即将显示引用信息串。.
3A.引用信息串显示结束;即将显示发现信息。间隔计时器通道2测试或失灵。
3B用OPTI电路片(只是486)使辅助超高速缓冲存储器作初始准备。已显示发现<ESC>信息;虚拟方式,存储器测试即将开始。按日计算的日历时钟测试正在进行或失灵。
3C建立允许进入CMOS设置的标志。.串行端口测试正在进行或失灵。
3D初始化键盘/PS2鼠标/PNP设备及总内存节点。.并行端口测试正在进行或失灵。
3E尝试打开L2高速缓存。.数学协处理器测试正在进行或失灵。
40.已开始准备虚拟方式的测试;即将从视频存储器来检验。调整CPU速度,使之与外围时钟精确匹配。
41中断已打开,将初始化数据以便于0:0检测内存变换(中断控制器或内存不良)从视频存储器检验之后复原;即将准备描述符表。系统插件板选择失灵。
42显示窗口进入SETUP。描述符表已准备好;即将进行虚拟方式作存储器测试。扩展CMOSRAM故障。
43若是即插即用BIOS,则串口、并口初始化。进入虚拟方式;即将为诊断方式实现中断。.44.已实现中断(如已接通诊断开关;即将使数据作初始准备以检查存储器在0:0返转。)BIOS中断进行初始化。
45初始化数学协处理器。数据已作初始准备;即将检查存储器在0:0返转以及找出系统存储器的规模。.
46.测试存储器已返回;存储器大小计算完毕,即将写入页面来测试存储器。检查只读存储器ROM版本。
47.即将在扩展的存储器试写页面;即将基本640K存储器写入页面。
48.已将基本存储器写入页面;即将确定1MB以上的存储器。视频检查,CMOS重新配置。
49.找出1BM以下的存储器并检验;即将确定1MB以上的存储器。.
4A.找出1MB以上的存储器并检验;即将检查BIOSROM数据区。进行视频的初始化。
4B.BIOSROM数据区的检验结束,即将检查<ESC>和为软复位清除1MB以上的存储器。.4C.清除1MB以上的存储器(软复位)即将清除1MB以上的存储器.屏蔽视频BIOSROM。.4D。已清除1MB以上的存储器(软复位);将保存存储器的大小。.
4E若检测到有错误;在显示器上显示错误信息,并等待客户按<F1>键继续。开始存储器的测试:(无软复位);即将显示第一个64K存储器的测试。显示版权信息。
4F读写软、硬盘数据,进行DOS引导。开始显示存储器的大小,正在测试存储器将使之更新;将进行串行和随机的存储器测试。.
50将当前BIOS监时区内的CMOS值存到CMOS中。完成1MB以下的存储器测试;即将高速存储器的大小以便再定位和掩蔽。将CPU类型和速度送到屏幕。
51.测试1MB以上的存储器。.
52所有ISA只读存储器ROM进行初始化,最终给PCI分配IRQ号等初始化工作。已完成1MB以上的存储器测试;即将准备回到实址方式。进入键盘检测。
53如果不是即插即用BIOS,则初始化串口、并口和设置时种值。保存CPU寄存器和存储器的大小,将进入实址方式。.
54.成功地开启实址方式;即将复原准备停机时保存的寄存器。扫描“打击键”
55.寄存器已复原,将停用门电路A-20的地址线。.
56.成功地停用A-20的地址线;即将检查BIOSROM数据区。键盘测试结束。
57.BIOSROM数据区检查了一半;继续进行。.
58.BIOSROM的数据区检查结束;将清除发现<ESC>信息。非设置中断测试。
59.已清除<ESC>信息;信息已显示;即将开始DMA和中断控制器的测试。.
5A..显示按“F2”键进行设置。
5B..测试基本内存地址。
5C..测试640K基本内存。
60设置硬盘引导扇区病毒保护功能。通过DMA页面寄存器的测试;即将检验视频存储器。测试扩展内存。
61显示系统配置表。视频存储器检验结束;即将进行DMA#1基本寄存器的测试。.
62开始用中断19H进行系统引导。通过DMA#1基本寄存器的测试;即将进行DMA#2寄存器的测试。测试扩展内存地址线。
63.通过DMA#2基本寄存器的测试;即将检查BIOSROM数据区。.
64.BIOSROM数据区检查了一半,继续进行。.
65.BIOSROM数据区检查结束;将把DMA装置1和2编程。.
66.DMA装置1和2编程结束;即将使用59号中断控制器作初始准备。Cache注册表进行优化配置。
67.8259初始准备已结束;即将开始键盘测试。.
68..使外部Cache和CPU内部Cache都工作。
6A..测试并显示外部Cache值。
6C..显示被屏蔽内容。
6E..显示附属配置信息。
70..检测到的错误代码送到屏幕显示。
72..检测配置有否错误。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国隐形渗透性密封剂行业头部企业市场占有率及排名调研报告
- 山东省日照市高三上学期期末考试语文试卷(含答案)
- 2025会议 展览合同
- 2025机动车买卖合同模板
- 运输类合同范本
- 南宁房屋租赁服务合同模板
- 2025建筑施工物资租赁合同示范文本无担保方
- 鸡蛋供货采购合同
- 借款用于投资合同
- 技能培训中的表达技巧训练
- 2024年资格考试-对外汉语教师资格证笔试参考题库含答案
- 2024年4月自考02382管理信息系统答案及评分参考
- (苏版)初三化学上册:第2单元课题1空气
- 2023年12月广东珠海市轨道交通局公开招聘工作人员1人笔试近6年高频考题难、易错点荟萃答案带详解附后
- 腹腔镜肾上腺肿瘤切除术查房护理课件
- 燃气罩式炉应急预案
- 专题23平抛运动临界问题相遇问题类平抛运和斜抛运动
- 超声科医德医风制度内容
- 高三开学收心班会课件
- 蒸汽换算计算表
- 四年级计算题大全(列竖式计算,可打印)
评论
0/150
提交评论