【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR


【Python例】利用 python 进行图片文字信息的提取 — OCR-EasyOCR


本文主要用于记录,并使用 python 脚本进行图片文字信息的生成。

什么是 OCR?

img

OCR

OCR(Optical character recognition,光学字符识别)是一种将图像中的手写字或者印刷文本转换为机器编码文本的技术。通过数字方式存储文本数据更容易保存和编辑,可以存储大量数据,比如 1G 的硬盘可以存储数百万本书。

OCR 技术可以将图片,纸质文档中的文本转换为数字形式的文本。OCR 过程一般包括以下步骤:

  1. 图像预处理
  2. 文本定位
  3. 字符分割
  4. 字符识别
  5. 后处理

使用 python 库实现 OCR

对于 OCR 技术来说 python 实际上是一种对数据的交互接口,核心还是后端的一些数据处理,但是 python 的库实在是太多了,这里罗列一些 python 的 OCR 处理的功能库。

  1. easyocr
  2. PaddleOCR
  3. pytesseract
  4. 其他

Easyocr

安装

这里使用 pip 工具进行 python 库构 easyocr 的安装,

python3 -m  pip install easyocr

测试例子

#!/usr/bin/env python3
# python3 -m  pip install easyocr //使用pip工具进行easyocr的安装
import easyocr
import os
# print(os.getcwd())
current_path = os.path.dirname(__file__)  # 设置相对路径
print(current_path)
#视屏截图
test_images1 = (current_path+'/source/test_img1.jpg')
#文本pdf截图
test_images2 = (current_path+'/source/test_img2.png')
#路标图片
test_images3 = (current_path+'/source/test_img3.jpg')
#书本拍照图片
test_images4 = (current_path+'/source/test_img4.jpg')
#设置识别中英文两种语言
reader = easyocr.Reader(['ch_sim','en'], gpu =  False) # need to run only once to load model into memory
#对有视频截图图片进行测试
# result = reader.readtext((test_images1), detail = 0)
# print(result)
#对于普通pdf文本截图进行测试
# result = reader.readtext((test_images2), detail = 0)
# print(result)
#对于普通pdf文本截图进行测试
# result = reader.readtext((test_images3), detail = 0)
# print(result)
#对于书本的文本照片进行测试
result = reader.readtext((test_images4), detail = 0)
print(result)

运行脚本,运行时间有点长,

对比结果

结果如下:

测试一:

img

['17:28', '8月10日周三', '100%', '7.3万', '1.', '计算机早期历史-Early Computing', 'R2 90人正在看', '十关注', '篱勺(  跳M飙-', '揠雠h鄙  熊?盥#跳:噩?ia?+(枧?龅 长制靓视', '揠胸人名8 @adles [@@% Ada Lovelace', "@2:20  最f跳['熨篡氍。举例如何用", '@', '@485 C@mUiep  (.)减指l肌器', '@45  机罂E轨〈慰8  盥-踯黛器。箭-^邸脚乘除胸Q噩', '@@844  炮剿)武精邋要珧黛酆召召l,查表e [:轰颏:n巅孺贯歃-U「患', '@30 Gailes  66a@9t踮%澄2', '瓷艴谴筹阋。想曲子粝规+8飙恩:圃跳黛视', "@88@ [vease龄e粝飙~孓暇憩翟廓@唾敝 '俭9翩 ", '@@?写 ,回簪9@牢 谗 Hal@men酶o胤冼制患飙)长翅1邑n綮', '翻谮@-魈膨胸2c筝', '徽@ 醮陬皮', '@sh (@wse 崇幕组颛傩', '00:00', '11:53', '选集', '倍速', '1080P', '十']

测试二:

img

['木克土', '*c币弯', '1-2', '五行相生相克示意图', '2.五行相克', '五行相克。指木。火  士。金  水之间存在着有序的递相克制。制约和抑制的关系。', '五行相克次序是:  木克士。士克水,水克火 火克金 ,金克木。在五行相克关系中,', '任何一行都具有', '\'克我"和 "我克"两方面的关系。', '《内经》把相克关系称为 "所胜"', '"所', '不胜"关系: "克我"者为我 "所不胜", "我克"者为我 "所胜"。因此。五行相克。实际上是五', '行中的某一行对其所胜行的克制和制约。', '如以木为例,', '由于木克士。故 "我克"者为士,', '土', '为木之 "所胜"; 由于金克木。故 "克我"者为金。金为木之 "所不胜"(图1-2)', '木生火一', '火生土', '3', '{', '*', 's', '王克水', '金克术|']

测试三:

img

['RD.', '酉环 路', 'RD.', '渔婆路', 'YUPO RD。', '安 宁  路', '北 N', '长田岸路', 'CHANGTIANAN', '靖_安  路', 'JIN G AN R0', 'X IHU AN']

测试四:

[img]

['94', '项目:  将带有美囤风格日期的文件改名为欧洲风格日期', '假定你的老板用电子邮件发给你上千个文件,文件名包含美困风格的日期', '(MM-DD-YYYY), 需要将它们改名为欧洲风格的日期', '(DD-MMYYYY)。 手工完', '成这个无聊的任务可能需要几天时间 !让我们写一个程序来完成它。', '下面是程序要做的事:', '检查当前工作目录的所有文件名。寻找美国风格的日期。', '。 :', '如果找到,将该文件改名,交换月份和日期的位置,', '使之成为欧洲风格。', '0', '这意味着代码需要做下面的事情:', "'", '创建一个正则表达式。可以识别美国风格日期的文本模式。', '0', 'U', '调用 os.listdir0, 找出工作目录中的所有文件。', " '-", '循环遍历每个文件名,利用该正则表达式检查它是否包含日期。', '如果它包含日期。用 shutil.move0对该文件改名。', '` 。', '对于这个项目,打开一个新的文件编辑器窗口,将代码保存为 renameDates:py c', '0']
序号参考描述结果表述
测试 1视频截图照片标准字符,如时间,标题能识别,带有背景干扰的字体没有很好的识别出来
测试 2PDF 文本截图因为是 pdf 文本所以字体清晰,大多都识别出来了,有少许倒立的字符识别不好
测试 3交通路牌照片字符识别还行,内容识别效果较好
测试 4书本内容照片因为书本印刷,会有渗墨,所以造成了一些背景干扰,则有个别字识别不好

结论

easyocr 存在一些背景干扰的文字识别正确率的问题,可能需要一些调整,但是对于一些 pdf 等标准数字文档的截图还是可以识别并且进行内容提取的。

PaddleOCR

安装

这里使用 pip 工具进行 python 库构的安装,

python3 -m  pip install 

并未进行测试

测试例子

#!/usr/bin/env python3

对比结果

锟钅烤锟斤

序号参考描述结果表述
测试 1视频截图照片锟钅烤锟斤
测试 2PDF 文本截图锟钅烤锟斤
测试 3交通路牌照片锟钅烤锟斤
测试 4书本内容照片锟钅烤锟斤

结论

锟钅烤锟斤

pytesseract

安装

这里使用 pip 工具进行 python 库构的安装,

python3 -m  pip install 

并未进行测试

测试例子

#!/usr/bin/env python3

对比结果

锟钅烤锟斤

序号参考描述结果表述
测试 1视频截图照片锟钅烤锟斤
测试 2PDF 文本截图锟钅烤锟斤
测试 3交通路牌照片锟钅烤锟斤
测试 4书本内容照片锟钅烤锟斤

结论

锟钅烤锟斤

参考文档

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值