Opencv 图片的OCR识别的实战示例


Posted in Python onMarch 02, 2021

一、图片变换

0、导入模块

导入相关函数,遇到报错的话,直接pip install 函数名。

import numpy as np
import argparse
import cv2

参数初始化

ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True,
  help = "Path to the image to be scanned") 
args = vars(ap.parse_args())

Parameters:

--image images\page.jpg

1、重写resize函数

def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
  dim = None
  (h, w) = image.shape[:2]
  if width is None and height is None:
   return image
  if width is None:
   r = height / float(h)
   dim = (int(w * r), height)
  else:
   r = width / float(w)
   dim = (width, int(h * r))
  resized = cv2.resize(image, dim, interpolation=inter)
  return resized

2、预处理

读取图片后进行重置大小,并计算缩放倍数;进行灰度化、高斯滤波以及Canny轮廓提取

image = cv2.imread(args["image"])
ratio = image.shape[0] / 500.0
orig = image.copy()
image = resize(orig, height = 500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(gray, 75, 200)

3、边缘检测

检测轮廓并排序,遍历轮廓。

cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0]# 轮廓检测
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5]#保留前5个轮廓

# 遍历轮廓
for c in cnts:
  # 计算轮廓近似
  peri = cv2.arcLength(c, True)# 计算轮廓长度,C表示输入的点集,True表示轮廓是封闭的
  #(C表示输入的点集,epslion判断点到相对应的line segment 的距离的阈值,曲线是否闭合的标志位)
  approx = cv2.approxPolyDP(c, 0.02 * peri, True)

  # 4个点的时候就拿出来
  if len(approx) == 4:
   screenCnt = approx
   break

4、透视变换

画出近似轮廓,透视变换,二值处理

cv2.drawContours(image, [screenCnt], -1, (0, 255, 0), 2)
warped = four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)#透视变换

# 二值处理
warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)
ref = cv2.threshold(warped, 100, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite('scan.jpg', ref)

二、OCR识别

0、安装tesseract-ocr

链接: 下载

在环境变量、系统变量的Path里面添加安装路径,例如:E:\Program Files (x86)\Tesseract-OCR

tesseract -v#打开命令行,进行测试
tesseract XXX.png result#得到结果 
pip install pytesseract#安装依赖包

打开python安装路径里面的python文件,例如C:\ProgramData\Anaconda3\Lib\site-packages\pytesseract\pytesseract.py
将tesseract_cmd 修改为绝对路径即可,例如:tesseract_cmd = ‘C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'

1、导入模块

from PIL import Image
import pytesseract
import cv2
import os

2、预处理

读取图片、灰度化、滤波

image = cv2.imread('scan.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 3)

3、输出结果

filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)  
text = pytesseract.image_to_string(Image.open(filename))
print(text)
os.remove(filename)

到此这篇关于Opencv 图片的OCR识别的实战示例的文章就介绍到这了,更多相关Opencv 图片的OCR识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python logging类库使用例子
Nov 22 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python实现ping的方法
Jul 06 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
TensorFlow变量管理详解
Mar 10 Python
Python selenium抓取微博内容的示例代码
May 17 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python多线程并发及测试框架案例
Oct 15 Python
python基于property()函数定义属性
Jan 22 Python
Python调用.net动态库实现过程解析
Jun 05 Python
python实现控制台输出颜色
Mar 02 #Python
python 如何在测试中使用 Mock
Mar 01 #Python
python装饰器代码深入讲解
Mar 01 #Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 #Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 #Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 #Python
python中random模块详解
Mar 01 #Python
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
深入理解Python中装饰器的用法
2016/06/28 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
python append、extend与insert的区别
2016/10/13 Python
Python实现网站注册验证码生成类
2017/06/08 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
python爬虫实现获取下一页代码
2020/03/13 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
高中英语教学反思
2014/02/04 职场文书
新闻发布会主持词
2014/03/28 职场文书
开门红主持词
2014/04/02 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
小学生优秀评语
2014/12/29 职场文书
员工升职自我评价
2019/03/26 职场文书
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python