前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R+OCR︱借助tesseract包实现图片文本提取功能

R+OCR︱借助tesseract包实现图片文本提取功能

作者头像
悟乙己
发布2019-05-26 19:58:29
2.2K0
发布2019-05-26 19:58:29
举报
文章被收录于专栏:素质云笔记素质云笔记

2016年11月,Jeroen Ooms在CRAN发布了tesseract包,实现了R语言对简单图片的文本提取、分析功能。 利用开源OCR引擎进行图片处理,目前可以识别超过100种语言,R语言可以借助tesseract调用OCR引擎进行相应操作。 从图像中提取文本时,需要提前安装训练数据(地址:https://github.com/tesseract-ocr/tessdata),系统默认为英语训练数据。在使用过程中,最好使用高对比度、低噪声、水平格式文本的图片。


转载于公众号R语言中文社区

一.核心函数介绍

ocr(image, engine = tesseract("eng"))
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() #查看当前可用语言格式
这里写图片描述
这里写图片描述
text_1<-ocr('e:/tess/eng_1.jpg', engine = tesseract("eng"))
cat(text_1) #输出结果
这里写图片描述
这里写图片描述

3. 利用tesseract包提取中文文本

tesseract_info() #先查看是否有中文训练数据,如果没有,需要下载安装
tesseract_download("chi_tra")
tesseract_download("chi_sim") #chi_sim和chi_tra均是中文训练数据
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
text<-ocr('e:/tess/chi_1.jpg', engine = tesseract("chi_sim"))
这里写图片描述
这里写图片描述

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

.


延伸一:实践过程中乱码较多

[1] "L】 = ′,\n` /′ /` _ …翦\n\"\n酐 敬\n〖 》 ' ` …\n`/\n鳙 Z … 蓁L `\n仗 ′ `) 犍 E\n璧荸「翼 〈v胴 ′  量\n\" 麸 `  \n嵩支 ′′\n`=…荃′′熹立′\n_ 二鼻′婶 二: 冀三熹′ “ \"u\n~z(…毫屋喹墓莫重…了篡=`′′_-._′′ …` ′′_〉:、.” c, ) `z 『\n一.〈 脲 _ 『 .\n. _ 霆) 映忧愁郁渤瓜\nWe|bo.Com/u/6069986291\n\n"

这是一张图的输出,乱码这么多? 这是R问题,还是算法的问题? 从笔者在python那边实践来看,还是一样的不好,需要自己训练自己词库才能更好的识别,所以这也只是简单的应用了,中文还是需要自己训练一些文件才能进行识别。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年01月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.核心函数介绍
  • 二.案例演示
    • 1.环境配置
      • 2.利用tesseract包提取英文文本
        • 3. 利用tesseract包提取中文文本
          • 4. 批量提取图片文本内容
          • 三.文章小结
            • 延伸一:实践过程中乱码较多
            相关产品与服务
            文字识别
            文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档