首页 / 专利库 / 电脑编程 / 算法 / 一种基于opencv库的文本版面识别方法

一种基于opencv库的文本版面识别方法

阅读:116发布:2021-06-04

专利汇可以提供一种基于opencv库的文本版面识别方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于opencv库的文本版面识别方法,一种基于opencv库的文本版面识别方法,具体步骤为:步骤1、通过Smallpdf将所需pdf文件转成多张图片,每一页pdf一张图;步骤2、使用OpenCV对图片进行膨胀操作;步骤3、调用开源的Tesseract OCR API进行文字识别本发明涉及文本版面识别技术领域。该基于opencv库的文本版面识别方法,解决了常常由于文本标题的格式不规范、不统一的问题,给计算机的自动识别带来困难,最后的提取结果会不够精准,常有赘余,难以广泛应用题的问题。,下面是一种基于opencv库的文本版面识别方法专利的具体信息内容。

1.一种基于opencv库的文本版面识别方法,具体步骤为:
步骤1、通过Smallpdf将所需pdf文件转成多张图片,每一页pdf一张图;
步骤2、使用OpenCV对图片进行膨胀操作;
步骤3、调用开源的Tesseract OCR API进行文字识别;
步骤4、将识别结果与基于规则提取的结果进行最长公共子串提取,精简部分基于规则提取的多余标题。
2.根据权利要求1所述的一种基于opencv库的文本版面识别方法,其特征在于:步骤1中pdf文件转换而成的数字图像进行操作,数字图像是以二维数组形式表示的图像,其数字单元为像元,像素是数字图像的基本元素,是在模拟图像数字化时对连续空间进行离散化得到的。
3.根据权利要求1所述的一种基于opencv库的文本版面识别方法,其特征在于:步骤2中膨胀操作将图像与任意形状的结构元素,通常为正方形或圆形,进行卷积,所述膨胀操作将结构元素划过图像,将结构元素覆盖区域的最大相素值提取,并代替锚点位置的相素。
4.根据权利要求1所述的一种基于opencv库的文本版面识别方法,其特征在于:步骤2中OpenCV包含的函数不少于五百个,且OpenCV主体分为五个模,五个模块分别为CV模块、MLL模块、HIGhGUI模块、CxCore模块和CV Aux模块。
5.根据权利要求4所述的一种基于opencv库的文本版面识别方法,其特征在于:所述CV模块进行图像处理和视觉算法;MLL模块包括统计分类器、HIGhGUI模块进行GUI、图像和视频的输入输出;CxCore模块包括基本结构和算法以及XML支持和绘图函数;CV Aux模块存放一些即将被淘汰的算法和函数。
6.根据权利要求1所述的一种基于opencv库的文本版面识别方法,其特征在于,步骤3中调用Tesseract OCR的方式有两种,一种是CMD方式,在命令行中执行tesseract,另外一种是通过调用API,tess4j是针对tesseract进行封装的java API,通过依赖引入JAR即可。
7.根据权利要求1所述的一种基于opencv库的文本版面识别方法,其特征在于,步骤4的具体方法为:
A、按行读取基于规则提取结果的文档;
B、进行最大公共子串提取;
C、输出新文件进行读取。
8.根据权利要求7所述的一种基于opencv库的文本版面识别方法,其特征在于,步骤A中由于基于规则提取的标题文档是一行一个标题,利用换行符进行行操作是最优选择。

说明书全文

一种基于opencv库的文本版面识别方法

技术领域

[0001] 本发明涉及文本版面识别技术领域,具体为一种基于opencv库的文本版面识别方法。

背景技术

[0002] 随着信息技术的发展,尤其是因特网的普及,信息量剧增犹如一片汪洋大海。在这纷繁复杂的信息海里,人们需要对文本资源进行检索、分类、信息过滤等操作,以提高对资源的访问效率和识别、区分对自己有价值的信息与数据,文本的目录体现了文本的结构,可以高度地概括文本的内容、精炼文本的主题信息,是实现上述操作的基础
[0003] 文本框架提取在信息检索、自动文摘、信息抽取等领域扮演着重要的色,虽然许多文献有着清晰的结构,但常常因为没有生成目录,使得用户的检索和信息过滤工作效率低下,造成不必要的时间资源浪费,所以将文本框架提取并生成目录是一个很重要的工作。
[0004] 在文本框架提取的领域里,主要有基于标题模式的提取、基于标题字体大小的提取两类方法对文本的框架进行提取,但常常由于文本标题的格式不规范、不统一的问题,给计算机的自动识别带来困难,最后的提取结果会不够精准,常有赘余,难以广泛应用题。

发明内容

[0005] 针对现有技术的不足,本发明提供了一种基于opencv库的文本版面识别方法,解决了常常由于文本标题的格式不规范、不统一的问题,给计算机的自动识别带来困难,最后的提取结果会不够精准,常有赘余,难以广泛应用题的问题。
[0006] 为实现以上目的,本发明通过以下技术方案予以实现:一种基于opencv 库的文本版面识别方法,具体步骤为:
[0007] 步骤1、通过Smallpdf将所需pdf文件转成多张图片,每一页pdf一张图;
[0008] 步骤2、使用OpenCV对图片进行膨胀操作;
[0009] 步骤3、调用开源的Tesseract OCR API进行文字识别;
[0010] 步骤4、将识别结果与基于规则提取的结果进行最长公共子串提取,精简部分基于规则提取的多余标题。
[0011] 优选的:步骤1中pdf文件转换而成的数字图像进行操作,数字图像是以二维数组形式表示的图像,其数字单元为像元,像素是数字图像的基本元素,是在模拟图像数字化时对连续空间进行离散化得到的。
[0012] 优选的:步骤2中膨胀操作将图像与任意形状的结构元素,通常为正方形或圆形,进行卷积,所述膨胀操作将结构元素划过图像,将结构元素覆盖区域的最大相素值提取,并代替锚点位置的相素。
[0013] 优选的:步骤2中OpenCV包含的函数不少于五百个,且OpenCV主体分为五个模,五个模块分别为CV模块、MLL模块、HIGhGUI模块、CxCore模块和CV Aux模块。
[0014] 优选的:所述CV模块进行图像处理和视觉算法;MLL模块包括统计分类器、HIGhGUI模块进行GUI、图像和视频的输入输出;CxCore模块包括基本结构和算法以及XML支持和绘图函数;CV Aux模块存放一些即将被淘汰的算法和函数。
[0015] 优选的,步骤3中调用Tesseract OCR的方式有两种,一种是CMD方式,在命令行中执行tesseract,另外一种是通过调用API,tess4j是针对 tesseract进行封装的java API,通过依赖引入JAR即可。
[0016] 优选的,步骤4的具体方法为:
[0017] A、按行读取基于规则提取结果的文档;
[0018] B、进行最大公共子串提取;
[0019] C、输出新文件进行读取。
[0020] 优选的,步骤A中由于基于规则提取的标题文档是一行一个标题,利用换行符进行行操作是最优选择。
[0021] 有益效果
[0022] 本发明提供了一种基于opencv库的文本版面识别方法。具备以下有益效果:
[0023] 该基于opencv库的文本版面识别方法,通过计算机视觉的角度,提高文本框架提取精确度,标题和正文在人眼视觉上的的差异给本文的工作提供了创新性的思路和方向,该差异的根本原因是计算机视觉、数字图像上的差异,利用标题文字和正文文字在计算机视觉上的差异,可准确地将标题提取出来。附图说明
[0024] 图1为本发明基于opencv库的文本版面识别流程图
[0025] 图2为本发明OpenCV主体模块图;
[0026] 图3位本发明基于OpenCV处理结果与基于规则提取结果的交叉匹配流程图。

具体实施方式

[0027] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028] 请参阅图1-3,本发明提供一种技术方案:一种基于opencv库的文本版面识别方法,具体步骤为:
[0029] 步骤1、通过Smallpdf将所需pdf文件转成多张图片,每一页pdf一张图;
[0030] 步骤2、使用OpenCV对图片进行膨胀操作;
[0031] 步骤3、调用开源的Tesseract OCR API进行文字识别;
[0032] 步骤4、将识别结果与基于规则提取的结果进行最长公共子串提取,精简部分基于规则提取的多余标题。
[0033] 进一步地、步骤1中pdf文件转换而成的数字图像进行操作,数字图像是以二维数组形式表示的图像,其数字单元为像元,像素是数字图像的基本元素,是在模拟图像数字化时对连续空间进行离散化得到的;
[0034] 进一步地、步骤2中膨胀操作将图像与任意形状的结构元素,通常为正方形或圆形,进行卷积,所述膨胀操作将结构元素划过图像,将结构元素覆盖区域的最大相素值提取,并代替锚点位置的相素;
[0035] 进一步地、步骤2中OpenCV包含的函数不少于五百个,且OpenCV主体分为五个模块,五个模块分别为CV模块、MLL模块、HIGhGUI模块、CxCore 模块和CV Aux模块;
[0036] 进一步地、所述CV模块进行图像处理和视觉算法;MLL模块包括统计分类器、HIGhGUI模块进行GUI、图像和视频的输入输出;CxCore模块包括基本结构和算法以及XML支持和绘图函数;CV Aux模块存放一些即将被淘汰的算法和函数;
[0037] 进一步地、步骤3中调用Tesseract OCR的方式有两种,一种是CMD方式,在命令行中执行tesseract,另外一种是通过调用API,tess4j是针对 tesseract进行封装的java API,通过依赖引入JAR即可;
[0038] 进一步地,步骤4的具体方法为:
[0039] A、按行读取基于规则提取结果的文档;
[0040] B、进行最大公共子串提取;
[0041] C、输出新文件进行读取;
[0042] 进一步地,步骤A中由于基于规则提取的标题文档是一行一个标题,利用换行符进行行操作是最优选择。
[0043] 一种基于opencv库的文本版面识别方法,具体步骤为:步骤1、通过 Smallpdf将所需pdf文件转成多张图片,每一页pdf一张图;
[0044] 步骤1中pdf文件转换而成的数字图像进行操作,数字图像是以二维数组形式表示的图像,其数字单元为像元,像素是数字图像的基本元素,是在模拟图像数字化时对连续空间进行离散化得到的;像素是数字图像的基本元素,是在模拟图像数字化时对连续空间进行离散化得到的,每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值;
[0045] 每个图像的像素通常对应于二维空间中一个特定的“位置”,并且有一个或者多个与那个点相关的采样值组成数值。根据这些采样数目及特性的不同数字图像可以划分为:二值图像、彩色图像、伪彩色图像、三维图像等;
[0046] 二值图像:图像中每个像素的亮度值仅可以取自0到1的图像,灰度图像,也称为灰阶图像:图像中每个像素可以由0到255的亮度值表示。0-255 之间表示不同的灰度级,0表示黑,255表示白;
[0047] 步骤2、使用OpenCV对图片进行膨胀操作,步骤2中膨胀操作将图像与任意形状的结构元素,通常为正方形或圆形,进行卷积,所述膨胀操作将结构元素划过图像,将结构元素覆盖区域的最大相素值提取,并代替锚点位置的相素;
[0048] 图像形态学中的膨胀操作,主要介绍形态学中的膨胀和与其相对应的腐蚀两种操作的原理;膨胀与腐蚀(Dilation与Erosion)。
[0049] 膨胀与腐蚀能实现多种多样的功能,主要如下:消除噪声;分割(isolate) 出独立的图像元素,在图像中连接(join)相邻的元素;寻找图像中的明显的极大值区域或极小值区域;求出图像的梯度;
[0050] 在形态学中,结构元素是最重要最基本的概念。结构元素在形态变换中的作用相当于信号处理中的“滤波窗口”,用B(x)代表结构元素,对工作空间E中的每一点x,腐蚀和膨胀的定义为:膨胀: 腐蚀:
[0051] 用B(x)对E进行膨胀的结果就是把结构元素B平移后使B与E的交集非空的点构成的集合,用B(x)对E进行腐蚀的结果就是把结构元素B平移后使B包含于E的所有点构成的集合;
[0052] 步骤2中OpenCV包含的函数不少于五百个,且OpenCV主体分为五个模块,五个模块分别为CV模块、MLL模块、HIGhGUI模块、CxCore模块和CV Aux 模块,所述CV模块进行图像处理和视觉算法;MLL模块包括统计分类器、 HIGhGUI模块进行GUI、图像和视频的输入输出;CxCore模块包括基本结构和算法以及XML支持和绘图函数;CV Aux模块存放一些即将被淘汰的算法和函数;
[0053] OpenCV(open source computer vision library)是一个开放源码的计算机视觉库,OpenCV采用C/C++语言编写,可以运行在Linux/Windows/Mac 等操作系统上,OpenCV还提供了Python、Ruby、MATLAB以及其他语言的接口
[0054] 步骤3、调用开源的Tesseract OCR API进行文字识别,Tesseract作为 OCR的一个识别工具和引擎,可以很容易地检测出图像中的文本信息,作为一款开源的光学字符识别(OCR)项目,能够识别图像验证码,比如对于一个TIF 格式的文字图片,Tesseract辨识出该图片中的文字,然后将辨识出的文字写入到一个文本文件中,其识别效果非常准确,如果想要识别不同语言的文字图像,需要下载对应的数据文件,才能让Tesseract识别更多格式的图像。其特点为:开源的;轻量级的;有自动学习能也可以通过训练来建立自己的常用字符串,支持版面分析。
[0055] Tesseract可直接从许多Linux发行版中获得。Tesseract包一般被命名为“TESSERACT”或“tesseract.OCT”,可以通过搜索发行版的软件仓库中找到,Tesseract也提供语言训练数据(搜索库),可以自己训练或者下载相应的训练数据,将其解压并复制traineddata文件到“tessdata”目录;
[0056] 步骤3中调用Tesseract OCR的方式有两种,一种是CMD方式,在命令行中执行tesseract,另外一种是通过调用API,tess4j是针对tesseract进行封装的java API,通过依赖引入JAR即可;步骤4、将识别结果与基于规则提取的结果进行最长公共子串提取,精简部分基于规则提取的多余标题,步骤4的具体方法为:步骤A、按行读取基于规则提取结果的文档;步骤A中由于基于规则提取的标题文档是一行一个标题,利用换行符进行行操作是最优选择,JAVA IO的BufferedReader中的readline是读取流读取数据时常使用的方法,当读到换行标记'\n'或'\r'(回车)时,会跟着换行,同时会以字符串形式返回这一行的数据,当读取完所有的数据时会返回null,利用这一方法,每次返回一行标题并对其进行操作;
[0057] 步骤B、进行最大公共子串提取,将读取的一行标题与基于OpenCV提取的结果进行最大公共子串的提取,由于部分符合标题规则的多余标题在基于 OpenCV提取的结果中是以乱码的形式存在,在匹配中不存在最长公共子串,在最终结果里就会被过滤,达到更精准的文本框架提取效果;求最长公共子串可运用暴力匹配算法,设较短的文本目录提取的字符串为S,识别文本为T,用变量i表示每次从短文本S减去的字符长度,用begin表示从S的第begin 个位置开始取,end表示所取字符的结束位置,其中,0<i=L[S],end=L[S]-i, begin=0[24]。其过程为:
[0058] 初始化变量i为0;
[0059] 初始化begin为0,end=L[S]-i;
[0060] 从S字符串的begin位置取到end位置得连续字符子串S[begin..end];
[0061] 将c中得到的连续字符子串S[begin..end]与文本T进行比较,这里调用 java中的contains()判断T是否包含字符子串S[begin..end],如果是,则返回函数值S[begin..end];
[0062] begin和end逐步递增,步长为1,重新从步骤c开始,直至end>L[S];
[0063] 当end>L[S]时,i递增,步长为1,重新从步骤b开始,直至步骤d中成功返回函数值,或者i=L[S],返回空;
[0064] 步骤C、输出新文件进行读取。
[0065] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0066] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈