python+opencv图片文字旋转矫正
最近在使用实在RPA做机器人自动化,功能是受理单核对,即对核对业务受理人是否上传受理单承诺书
方法很简单,由于系统中图片位置不固定,所以需要将所有附件进行下载,并进行图像文字识别,但是实在RPA中的OCR识别无法识别颠倒倾斜的图片,所以有两种方法,一种是使用其他OCR模型,一种是将图片旋转,由于操作在云电脑,使用的公司内网,无法连外网,所以第一种方法实现较为麻烦,所以选择在识别前将图片旋转。
使用Tesseract 和 Python 矫正文本方向
1.安装pytesseract
pip install pytesseract -i https://pypi.tuna.tsinghua.edu.cn/simple
2.下载tesseract
下载地址:https://digi.bib.uni-mannheim.de/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",识别的是中文,否则会出错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
2021-09-12 java快速排序