文档章节

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

侠客人生
 侠客人生
发布于 2017/07/27 16:03
字数 1520
阅读 98
收藏 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文字识别软件系统,这些都是我们需要处理的,我们的目的很简单,只是要把影像作一个转换,使影像内的图形继续保存、有表格则表格内资料及影像内的文字,一律变成计算机文字,使能达到影像资料的储存量减少、识别出的文字可再使用及分析,当然也可节省因键盘输入的人力与时间。

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

© 著作权归作者所有

共有 人打赏支持
侠客人生
粉丝 14
博文 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
【备忘】总结一些Java学习者经常去的网站及论坛

这里面有些网站虽然不是这方面做的最大的,但是里面的东西确实是非常好 Java学习网站 JAVA学习者论坛(www.javaxxz.com):Java学习者论坛里面的资源非常多,里面有Java、大数据、机器学习、W...

远近高低各不同
07/14
0
0
CSDN日报180524——《一个合格的程序员,需要哪些必备技能?》

程序人生 | 一个合格的程序员,需要哪些必备技能? 作者:hollischuang 本文,主要来简单介绍一下,作为一个合格的 Java 开发,除了自身技术成长之外,还有哪些方面可以提升。 点击阅读全文 ...

blogdevteam
05/24
0
0
2018年Java编程学习面试最全知识点总结

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
21分钟前
3
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
28分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
37分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
45分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部