【OpenCV-Python实战项目】01-OCR文本检测

0.介绍

(1)Tesseract是一个开源文本识别 (OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本。
(2)安装Tesseract:
(3)python中安装pytesseract(用于调用Tesseract并返回结果)

1.基础功能实现

默认图像读取如下,后续将在此基础上展开检测。

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd=r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
img=cv2.imread('data/1.jpg')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
hImg,wImg,_=img.shape

1.1 字符检测

字符检测主要用到:boxes=pytesseract.image_to_boxes(img)
返回如下,注意用boxes的坐标系统是以图像左下角为原点,而OpenCV则是以图像左上角为原点坐标,不然会影响后续利用opencv绘制检测框以及添加文本。

M 61 257 129 320 0
u 144 256 182 303 0
r 196 257 222 305 0
注:从左到右依次是检测的字符(M),(61,257)表示M的左上角坐标,(129,320)表示M的右下角坐标

# 1.字符检测
def detectChar(img,draw=True):
    boxes=pytesseract.image_to_boxes(img)
    for b in boxes.splitlines():
        b=b.split(" ")				  #在每一行中分割,示意['M','61','257','129','320','0']
        x,y,w,h=int(b[1]),int(b[2]),int(b[3]),int(b[4])		    # x,y为boxes左上角'坐标,(w,h)为右下角坐标
        cv2.rectangle(img,(x,hImg-y),(w,hImg-h),(0,0,255),1)	# 这里绘制需要考虑两个坐标原点不同的影响
        # 将字符放在检测框下面
        cv2.putText(img,b[0],(x,hImg-y+25),cv2.FONT_HERSHEY_SIMPLEX,0.5,(50,50,255),2)
        # 绘制检测结果
    if draw:
        cv2.imshow('Result',img)
        key=cv2.waitKey(0)
        if key==ord('q'):
            cv2.destroyAllWindows()
      
detectChar(img)# 调用

                                                        **效果显示**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值