最近在使用实在RPA做机器人自动化,功能是受理单核对,即对核对业务受理人是否上传受理单承诺书。
方法很简单,由于系统中图片位置不固定,所以需要将所有附件进行下载,并进行图像文字识别,但是实在RPA中的OCR识别无法识别颠倒倾斜的图片,所以有两种方法,一种是使用其他OCR模型,一种是将图片旋转,由于操作在云电脑,使用的公司内网,无法连外网,所以第一种方法实现较为麻烦,所以选择在识别前将图片旋转。
使用Tesseract 和 Python 矫正文本方向
1.安装pytesseract
pip install pytesseract -i https://pypi.tuna.tsinghua.edu.cn/simple
2.下载tesseract
下载地址:Index of /tesseract
设置环境变量:
D:\xxx\Tesseract-OCR
下载语音包(按需,如果没有勾选):https://github.com/tesseract-ocr/tessdata/tree/main
3.代码
from pytesseract import Output
import pytesseract
import cv2
# 打印pytesseract支持的所有语言
print('langs: ', pytesseract.get_languages(config=''))
def rotate_bound(image, angle):
# 获取图像的中心点
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, -angle, 1.0)
return cv2.warpAffine(image, M, (w, h))
# 自定义tesseract目录
pytesseract.pytesseract.tesseract_cmd = r"D:\\xxx\\xxx\\Tesseract-OCR\\tesseract.exe"
# 自定义tessdata目录
tessdata_dir_config = "D:\\xxx\\xxx\\Tesseract-OCR\\tessdata"
image = cv2.imread('6.jpg')
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
results = pytesseract.image_to_osd(rgb, lang="chi_sim", output_type=Output.DICT)
print("[INFO] detected orientation: {}".format(
results["orientation"]))
print("[INFO] rotate by {} degrees to correct".format(
results["rotate"]))
print("[INFO] detected script: {}".format(results["script"]))
rotated_image = rotate_bound(image, angle=results["rotate"])
# 显示旋转后的图片
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
重点pytesseract.image_to_osd中的lang要改成chi_sim,即 lang="chi_sim",识别的是中文,否则会出错