本文主要介绍利用R语言中的tesseract包进行中英文pdf与图片的OCR文字识别,目前tesseract能够支持100多种语言[1]。
1.准备工作
首先需要安装tesseract包,由于tesseract包中不自带中文语言库,需要使用tesseract_download() 函数进行下载,如下载失败可后台回复20220408获取,将中文语言库chi_sim文件放置在 #$datapath路径下。同时分别准备中英文的图片与pdf文档,如下所示。
setwd("C:\\Users\\Acer\\Desktop") #工作路径
install.packages("tesseract") #install
library(tesseract) #加载,需要等待数分钟
tesseract_download("chi_sim") #下载中文简体数据,如失败可在后台获取
tesseract_info()
#$datapath
#[1] "C:\\Users\\Acer\\AppData\\Local\\tesseract5\\tesseract5\\tessdata/"
#$available
#[1] "chi_sim" "chi_sim_vert" "eng" "osd"
2.图片文字识别
2.1中文图片文字识别
jpgtext_CHN <- tesseract::ocr("CHN_OCR.jpg", engine = tesseract("chi_sim"))
cat(jpgtext_CHN)
#中 央 气 象 台 4 月 8 日 06 时 继 续 发 布 大 霁 黄 色
#预 警 : 预 计 ,4 月 8 日 白 天 至 夜 间 , 渤 海 北
#部 海 域 、 辽 东 半 岛 东 部 沿 岸 海 域 、 山 东 半
#岛 南 部 沿 岸 海 域 、 江 芬 南 部 沿 岸 海 域 、 长
#江 口 附 近 海 域 、 浙 江 东 部 沿 岸 海 域 将 有 能
#见 度 不 足 1 公 里 的 大 需 天 气 。 此 外 ,8 日 早
#晨 至 上 协 , 安 徽 北 部 、 山 东 半 岛 震 部 等 地
#的 部 分 地 区 有 大 雾 天 气 。
#.....
2.2英文图片文字识别
jpgtext_eng <- tesseract::ocr("engOCR.jpg", engine = tesseract("eng"))
cat(jpgtext_eng)
#--- Lesson 2 Breakfast or lunch?
#It was Sunday.
#| never get up early on Sundays.
#| sometimes stay in bed until lunchtime.
#Last Sunday | got up very late.
#| looked out of the window. It was dark
#outside.
#‘What a day!" | thought. ‘It's raining again.’
#Just then, the telephone rang
#.....
3.pdf文字识别
3.1中文pdf文字识别
pdftext_CHN <- tesseract::ocr("CHN_OCR.pdf", engine = tesseract("chi_sim"))
cat(pdftext_CHN)
#长 训 中 游 城 市 群 发 展 “ 十 四 五 “ 实 施 方 案
#长 江 中 游 城 市 群 地 跨 湖 北 、 湖 南 、 江 西 三 省 , 承 东 启 西 、 连
#南 接 北 , 是 推 动 长 江 经 济 带 发 展 、 促 进 中 部 地 区 崛 起 、 巩 固 “ 两
#横 三 纵 “ 城 镇 化 战 略 格 局 的 重 点 区 域 , 在 我 国 经 济 社 会 发 展 格 局
#中 具 有 重 要 地 位 。 为 加 快 长 江 中 游 城 市 群 协 同 发 展 , 依 据 《 中 华
#人 民 共 和 国 国 民 经 济 和 社 会 发 展 第 十 四 个 五 年 规 划 和 2035 年 远 景
#目 标 纲 要 》 与 《 中 共 中 央 、 国 务 院 关 于 新 时 代 推 动 中 部 地 区 高 质
#量 发 展 的 意 见 》, 编 制 本 实 施 方 案 。
#.....
3.2英文pdf文字识别
pdftext_eng <- tesseract::ocr("engOCR.pdf", engine = tesseract("eng"))
cat(pdftext_eng)
#Training elephants
#Two main techniques have been used for training elephants, which we may call re#spectively the tough and
#the gentle. The former method simply consists of setting an elephant to work an#d beating him until he does what is
#expected of him. Apart from moral considerations this is a stupid method of tra#ining, for it produces a resentful
#animal who at a later stage may well turn man-killer. The gentle method require#s more patience in the early stages,
#but produces a cheerful, good-tempered elephant who will give many years of loy#al service.
#.....
其他
更多内容及使用介绍可参考tesseract的参考手册[2]及帮助文档[3]。
参考资料
[1]Traineddata Files for Version 4.00 +: https://tesseract-ocr.github.io/tessdoc/Data-Files
[2]tesseract: https://cran.r-project.org/web/packages/tesseract/index.html
[3]Using the Tesseract OCR engine in R: https://cran.r-project.org/web/packages/tesseract/vignettes/intro.html