python批量识别图片指定区域文字内容


Posted in Python onApril 30, 2019

Python批量识别图片指定区域文字内容,供大家参考,具体内容如下

简介

对于一张图片,需求识别指定区域的内容

1.截取原始图上的指定图片当做模板
2.根据模板相似度去再原始图片上识别准确坐标
3.根据坐标剪切出指定位置图片,也就是所需的内容区域
4.对指定位置图片进行ocr识别

环境

Ubuntu18.04
Python2.7

所需Python模块

1.aircv

用于识别模板再原始图的位置坐标

pip install aircv

2.Pillow

用于剪裁图片

pip install Pillow

3.Tesseract

文字识别
在此也可以用平台端的API进行更精准的识别
ubuntu下Tesseract环境安装

sudo apt-get install libpng12-dev 
sudo apt-get install libjpeg62-dev 
sudo apt-get install libtiff4-dev 
sudo apt-get install gcc 
sudo apt-get install g++ 
sudo apt-get install automake

1.tesseract-ocr安装

sudo apt-get install tesseract-ocr

2.pytesseract安装

pip install pytesseract

Python代码

识别对应位置

#!/usr/bin/python2.7 
# -*- coding: utf-8 -*- 
import aircv


def matchImg(imgsrc, imgobj, confidence=0.2):
 """
  图片对比识别imgobj在imgsrc上的相对位置(批量识别统一图片中需要的部分)
 :param imgsrc: 原始图片路径(str)
 :param imgobj: 待查找图片路径(模板)(str)
 :param confidence: 识别度(0<confidence<1.0)
 :return: None or dict({'confidence': 相似度(float), 'rectangle': 原始图片上的矩形坐标(tuple), 'result': 中心坐标(tuple)})
 """
 imsrc = aircv.imread(imgsrc)
 imobj = aircv.imread(imgobj)

 match_result = aircv.find_template(imsrc, imobj,
         confidence) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
 if match_result is not None:
  match_result['shape'] = (imsrc.shape[1], imsrc.shape[0]) # 0为高,1为宽

 return match_result

图片剪裁

#!/usr/bin/python2.7 
# -*- coding: utf-8 -*- 
from PIL import Image, ImageEnhance

def cutImg(imgsrc, out_img_name, coordinate):
 """
  根据坐标位置剪切图片
 :param imgsrc: 原始图片路径(str)
 :param out_img_name: 剪切输出图片路径(str)
 :param coordinate: 原始图片上的坐标(tuple) egg:(x, y, w, h) ---> x,y为矩形左上角坐标, w,h为右下角坐标
 :return:
 """
 image = Image.open(imgsrc)
 region = image.crop(coordinate)
 region = ImageEnhance.Contrast(region).enhance(1.5)
 region.save(out_img_name)

图片识别

#!/usr/bin/python2.7 
# -*- coding: utf-8 -*- 
import pytesseract
from PIL import Image

image = Image.open('bb.png')
code = pytesseract.image_to_string(image)
print(code)

对于三方API识别自行研究

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
Python实现输出某区间范围内全部素数的方法
May 02 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
Nov 29 Python
Python数据可视化:泊松分布详解
Dec 07 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
如何解决pycharm调试报错的问题
Aug 06 Python
python 两种方法删除空文件夹
Sep 29 Python
Python常用扩展插件使用教程解析
Nov 02 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
python中tkinter复选框使用操作
Nov 11 Python
Python3.5装饰器典型案例分析
Apr 30 #Python
python如何制作缩略图
Apr 30 #Python
Python3.5装饰器原理及应用实例详解
Apr 30 #Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 #Python
python制作图片缩略图
Apr 30 #Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 #Python
使用Python实现企业微信的自动打卡功能
Apr 30 #Python
You might like
php巧获服务器端信息
2006/12/06 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python编写生成验证码的脚本的教程
2015/05/04 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android