文档章节

Java 图像智能字符识别技术——【专题一】

侠客人生
 侠客人生
发布于 2017/07/27 16:03
字数 1520
阅读 146
收藏 2

序言

     最近公司在做爬虫项目时,遇到一些问题,当抓取某互联网网站时,发现某互联网网站做了反爬虫操作。页面红的电话号码为图片形式,字体为红色,数字之间零间隔或负间隔,无法保存为文本,此时想起以前做人脸识别(OpenCV)时学习的一些图片操作。现在写一些Demo测试一下解决一下该问题。这个市面上有很多成熟的产品,如汉王的图片识别技术、WPS的PDF转换工具等,我们都可以使用OCR来解决。(知只是其中一种解决方案)

OCR文字识别

   ocr文字识别软件提供图片文字识别服务,是一个带有PDF文件处理功能的OCR软件;具有识别正确率高,识别速度快的特点。有批量处理功能,避免了单页处理的麻烦;支持处理灰度、彩色、黑白三种色彩的BMP、TIF、JPG、PDF多种格式的图像文件;可识别简体、繁体和英文三种语言(中文的可能稍微复杂一些,中文有一些相似、繁体的、复杂的文字这些识别时有些困难);具有简单易用的表格识别功能;具有TXT、RTF、HTM和XLS多种输出格式,并有所见即所得的版面还原功能。新增打开与识别PDF文件功能,支持文字型PDF的直接转换和图像型PDF的OCR识别,既可以采用OCR的方式将PDF文件转换为可编辑文档,也可以采用格式转换的方式直接转换文字型PDF文件为RTF文件或文本文件。

历史背景

        光学文字识别的概念是在1929年由德国科学家Tausheck最先提出来的,后来美国科学家Handel也提出了利用技术对文字进行识别的想法。 
  早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。20世纪70年代初,日本的学者开始研究汉字识别,并做了大量的工作。1986年以后我国的OCR研究有了很大进展,在汉字建模和识别方法上都有所创新,在系统研制和开发应用中都取得了丰硕的成果,不少单位相继推出了中文OCR产品。

图像识别框架

在使用OCR之前我们先了解一下图片识别框架,图片识别框架主要是由下面几个部分组成。


  1、图像输入、预处理:
  图像输入:对于不同的图像格式,有着不同的存储格式,不同的压缩方式。预处理:主要包括二值化(图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果),噪声去除,倾斜较正等
  2、二值化:
  对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。
  3、噪声去除:
  对于不同的文档,我们对噪声的定义可以不同,根据噪声的特征进行去噪,就叫做噪声去除
  4、倾斜较正:
  由于一般用户,在拍照文档时,都比较随意,因此拍照出来的图片不可避免的产生倾斜,这就需要进行较正。
  版面分析:
  5、将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优的切割模型。
  6、字符切割:
  由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能,这就需要文字识别软件有字符切割功能。
  7、字符识别:
  这一研究,已经是很早的事情了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。
  8、版面恢复:
  人们希望识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫做版面恢复。
  9、后处理、校对:
  根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。
  如果开发一个OCR文字识别软件系统,这些都是我们需要处理的,我们的目的很简单,只是要把影像作一个转换,使影像内的图形继续保存、有表格则表格内资料及影像内的文字,一律变成计算机文字,使能达到影像资料的储存量减少、识别出的文字可再使用及分析,当然也可节省因键盘输入的人力与时间。

从影像到结果输出,须经过影像输入、影像前处理、文字特征抽取、比对识别、最后经人工校正将认错的文字更正,将结果输出。

© 著作权归作者所有

共有 人打赏支持
侠客人生
粉丝 15
博文 43
码字总数 82954
作品 0
朝阳
私信 提问
如何以Java实现网页截图技术

今天看到某网友关于“如何以Java实现网页截图技术”的咨询帖,由于出现该咨询的地点非常不适合较长回复,故以博文形式回答。 事实上,如果您想以Java实现网页截图,也就是“输入一段网址,几...

Carl_
2015/03/03
0
7
ABBYY FineReader Engineocr文字识别软件详细介绍及下载

ABBYY FineReader Engine用于开发ocr文字识别软件和图片识别软件,提供自己的OCR API, 包括光学字符识别(OCR)、智能字符识别(ICR)、光标识别(OMR)、光学条码识别(OBR)、文档图片、P...

javascript1
2014/08/25
0
0
OSChina 技术周刊第二期

每周技术抢先看,总有你想要的! 移动开发 【软件】Google Android 官方培训课程中文版 【博客】iOS开发之Swift调用Objective-C代码 【博客】教你爱上Blocks(闭包)(iOS) 【博客】uick-co...

OSC编辑部
2014/09/28
12.1K
34
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
Java平台与.Net平台在服务器端前景预测

如果是服务器端, 毫无疑问C#是很难跟Java拼的。 就算将来,微软逆袭的机会也很渺茫了。就技术的先进性来说, Java平台是不如.Net平台, 但是, 程序员对于两个平台,直接接触的基本以语言为...

eechan
2017/09/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

spark安装测试

spark安装测试 由于本地已经安装好hadoop相关组件,所以本文是在yarn的基础上对spark进行安装及测试 确保hdfs及yarn成功启动,hadoop版本为2.7.3 安装scala,由于本人安装的spark是2.4.0,对应...

-九天-
18分钟前
2
0
周末看完了《电能计量自动化技术》

整体质量还行,下面分别将心得记录如下: 第一章:发展历程可以看看,现在算是智能电网阶段 2:讲主站系统。以文件进行各模块的交互很值得思考,尤其是批量数据,多团队合作的情况下。另外线...

max佩恩
38分钟前
7
0
mybatis批量update操作的写法,及批量update报错的问题解决方法

mybatis的批量update操作写法很简单,如下: 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿...

编程SHA
今天
16
0
EOS怎样删除钱包

在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是 直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。 学习EOS应用开发要选这个:【EOS智能合约...

汇智网教程
今天
11
0
Java语言快速实现简单MQ消息队列服务

使用 JAVA 语言自己动手来写一个MQ (类似ActiveMQ,RabbitMQ) 主要角色 首先我们必须需要搞明白 MQ (消息队列) 中的三个基本角色 ProducerBrokerConsumer 整体架构如下所示 自定义协议 首...

微笑向暖wx
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部