Toriyung

导航

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')   #加入中文识别

 

posted on 2022-03-03 17:00  Toriyung  阅读(76)  评论(1编辑  收藏  举报