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


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

什么是 OCR?

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)

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

对比结果

结果如下:

测试一:

['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', '十']

测试二:

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

测试三:

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

测试四:

[]

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

结论

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

PaddleOCR

安装

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

python3 -m  pip install

并未进行测试

测试例子

#!/usr/bin/env python3

对比结果

锟钅烤锟斤

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

结论

锟钅烤锟斤

pytesseract

安装

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

python3 -m  pip install

并未进行测试

测试例子

#!/usr/bin/env python3

对比结果

锟钅烤锟斤

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

结论

锟钅烤锟斤

参考文档

  • 适合小白的入门 OCR - CSDN
  • PaddleOCR 文档说明 - GitHub
  • EasyOCR 项目仓库地址 - GitHub
  • EasyOCR 项目实践 - 知乎
  • PaddleOCR 项目仓库地址 - GitHub
  • pytesseract 项目 - CSDN

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

  1. 【Python】利用python进行数据分析——以新型冠状病毒疫情为例

    [Python]利用python进行数据分析--以新型冠状病毒疫情为例 重要说明 只提交该文档这一个文件,做完后提交到学习通"结课大作业"中. 1. 文件命名: 必须以学号-姓名- ...

  2. 用python实现星期的转换_[Python实践] 利用python实现的日期映射礼拜X的简单实现...

    [Python实践] 利用python实现的日期映射礼拜X的简单实现 2018年12月19日 最近在处理分析数据的时候,突发奇想试着从用户离职的日期上判断是主动辞职还是被动解雇?数据的背景是美国某企业 ...

  3. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...

  4. Python:利用python编程实现三维图像绘制展示(六面体旋转、三维球柱状体、下雪场景等)

    Python:利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 目录 利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 1.实现六面体旋 ...

  5. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化

    Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图.热图可视化 目录 上海十六区,2020年5月份房价实时地图(数据来源房天下)可视化 雷达图.柱 ...

  6. python怎么实现检验_[python skill]利用python实现假设性检验方法

    [python skill]利用python实现假设性检验方法 刀尔東 2018-08-03 09:19:13 1244 收藏 2 版权 hello,大噶好,最近新学习了利用python实现假设性检验 ...

  7. 利用vertical-align实现图片文字垂直居中对齐(HTML、CSS)

    利用vertical-align实现图片文字垂直居中对齐(HTML.CSS) <!DOCTYPE html> <html lang="en"><hea ...

  8. 【Python】利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解)

    [Python]利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则可以利用以距离为半径画圆的方式来求得未知点坐标. 如果只有两个 ...

  9. 【PC工具】更新在线图片文字识别工具,OCR免费文字识别工具

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 之前分享过两个windows上的OCR文字识别工具: [PC工具]更新!windows ...

最新文章

  1. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
  2. 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)
  3. 红杉中国合伙人刘星:新零售新在哪里?
  4. Java_StringBuffer类
  5. excel匹配_python中实现excel的高级筛选
  6. 剑指offer(21)从上往下打印二叉树
  7. Java基础--面向对象以及相关知识
  8. adb 最大连接_工具集 | Android Studio—使用 WI-FI 进行 ADB 调试
  9. 走进 Growth Hacker 的世界
  10. 破解visio2013记录
  11. 基于物联网的温度采集系统(一):底层感知网络搭建
  12. mysql utf8占几个字节_utf-8的中文是一个字符占几个字节
  13. Android 9.0 http无法访问网络问题
  14. 123457123457#0#-----com.yuming.YiZhiFanPai01--前拼后广--益智早教游戏记忆翻牌cym
  15. c语言 power 头文件,pow - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  16. Java学习day08--方法引用和Stream流
  17. 初识dubbo(随笔)
  18. PotPlayer视频播放器使用技巧
  19. python解析markdown_fluent-python-translate
  20. 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序

热门文章

  1. C# (CSharp) 简述
  2. Mockplus推出真正无限制终身版,做原型就要一辈子!
  3. Java开发入门教程!java破解版游戏免费下载
  4. EditText使用详解
  5. 历史上最著名计算机病毒,似乎都成了我们的回忆
  6. 【基于SSM+MySQL+Jsp的高校学生成绩信息管理系统的设计与实现 ---(效果+源代码+数据库+获取 ~ ~】
  7. 距离下个当前日期还有多少天(距离下次生日还有多久)
  8. MyEclipse修改主题及恢复
  9. 计算机打开bios按键,电脑按热键,进入不了,BIOS怎么处理
  10. ORA-22858: invalid alteration of datatype(varchar2转化clob)