借助tesseract包实现图片文本提取功能

浏览: 2570

2016年11月,Jeroen Ooms在CRAN发布了tesseract包,实现了R语言对简单图片的文本提取、分析功能。

利用开源OCR引擎进行图片处理,目前可以识别超过100种语言,R语言可以借助tesseract调用OCR引擎进行相应操作。

从图像中提取文本时,需要提前安装训练数据(地址:https://github.com/tesseract-ocr/tessdata),系统默认为英语训练数据。在使用过程中,最好使用高对比度、低噪声、水平格式文本的图片。

 

一.核心函数介绍

1. ocr(image, engine = tesseract("eng"))

2. tesseract(language = NULL, datapath = NULL, options = NULL,cache = TRUE)

 

参数:

image    图片文件路径,支持png、tiff、jpeg等格式

engine   tesseract引擎,通过函数tesseract()来创建

language 训练数据的语言字符简写,默认为英语(eng)

datapath 训练数据的路径,模型为系统库

options  tesseract引擎的相关参数,默认为NULL,可查看文档

cache    可以使用训练数据的缓存版本,默认为TRUE

 

3.tesseract_download(lang, datapath = NULL, progress = TRUE) #下载训练数据

4.tesseract_info() #查看训练数据路径、可使用数据的语言格式、当前版本

 

参数:

lang 训练数据的语言格式简写,比如英语就是eng,可查看tessdata repository.

datapath 训练数据下载路径地址

progress  下载中,是否要输出下载进程,默认为输出

 

二.案例演示

1.环境配置

install.packages('tesseract')

library('tesseract')

setwd('e:/tess') # 设定工作路径

 

2.利用tesseract包提取英文文本

tesseract_info() #查看当前可用语言格式

Clipboard Image.png
text_1<-ocr('e:/tess/eng_1.jpg', engine = tesseract("eng"))

cat(text_1) #输出结果

Clipboard Image.png
3. 利用tesseract包提取中文文本

tesseract_info() #先查看是否有中文训练数据,如果没有,需要下载安装

tesseract_download("chi_tra")

tesseract_download("chi_sim") #chi_sim和chi_tra均是中文训练数据

Clipboard Image.png

text<-ocr('e:/tess/chi_1.jpg', engine = tesseract("chi_sim"))

Clipboard Image.png
4. 批量提取图片文本内容

temp<-list.files(pattern='*.jpg')  #处理默认路径下jpg格式图片

text<-ocr(temp, engine = tesseract("chi_tra"))

cat(text)

注释:在使用图片批量处理方法时,需要图片格式一致!

 

三.文章小结

目前R软件通过tesseract包调用OCR引擎提取图片文本信息,对图片文本格式、噪声、对比度要求比较高,同时在多种语言(简体中文、英文等)混合时,提取准确度比较低,目前可以借助tesseract包实现简单图片的文本提取,同时结合jiebaR包、tm包进行文本分析与挖掘。

Github:https://github.com/tesseract-ocr

Clipboard Image.png

推荐 3
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册