Tesseract OCR Q&A_1
2022/03/03
开始OCR项目训练
准备工作
*预先准备好opencv
使用的是tesseract,需先下载程序包
https://github.com/UB-Mannheim/tesseract/wiki
在pycharm下载pytesseract库
pip install pytessract
代码
import cv2 as cv import pytesseract as pytess pytess.pytesseract.tesseract_cmd = 'D:\work\\automation\Skill\Python\pythonWORK\cv\Tesseract\\tesseract.exe' img = cv.imread('D:\work\\automation\Skill\Python\pythonWORK\cv\material\woshi.jpg') img = cv.cvtColor(img,cv.COLOR_BGR2RGB) H,W,C = img.shape #输出窗口高宽色 ## 单个字母识别画框 boxes = pytess.image_to_boxes(img,lang='chi_sim') #image_to_boxes: 左下角为原点,输出左下角坐标和右上角坐标 for i in boxes.splitlines(): i = i.split(' ') print(i) x,y,w,h = int(i[1]),int(i[2]),int(i[3]),int(i[4]) cv.rectangle(img,(x,H-h),(w,H-y),(0,255,0),1) #opencv中左上角为原点,rectangle输入左上角坐标和右下角坐标 cv.imshow('img',img) cv.waitKey(0) ## 单词识别画框 boxes = pytess.image_to_data(img) #image_to_data(img): 左上角为原点,输出左上角坐标和宽高 for a,i in enumerate(boxes.splitlines()): if a != 0: i = i.split() if i[10] != '-1': # print(i) x, y, w, h = int(i[6]), int(i[7]), int(i[8]), int(i[9]) cv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),1) #opencv中左上角为原点,rectangle输入左上角坐标和右下角坐标 cv.imshow('img',img) cv.waitKey(0)
运行效果
遇到的问题
Q1:新建python project发现虚拟环境没有包,下载包时出现失败
A1:numpy版本和pip不适配,更新pip
python -m pip install --upgrade pip
Q2:方框不对应
A2:
opencv中画方框cv.rectangle()输入参数为左上角坐标和右下角坐标,以左上角为坐标原点
tesseract中:image_to_data()同上,输出左上角坐标和宽高,以左上角为坐标原点
image_to_boxes()输出左下角坐标和右上角坐标,以左下角为坐标原点,
所以在坐标输入时需对应和窗口大小进行运算
Q3:中文以及其他语言识别问题
A3:需在安装tesseract时选择对应语言包额外下载,识别时需加入对应语言选择如:
image_to_data(img,lang='chi_sim') #加入中文识别