首页 > 编程语言 >python+opencv图片文字旋转矫正

python+opencv图片文字旋转矫正

时间:2024-09-12 14:26:15浏览次数:10  
标签:矫正 rotate python image cv2 results opencv pytesseract tesseract

最近在使用实在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",识别的是中文,否则会出错

 

标签:矫正,rotate,python,image,cv2,results,opencv,pytesseract,tesseract
From: https://www.cnblogs.com/yuxuan-light-of-Taihu-Lake/p/18409839

相关文章

  • python定时任务解决方案
    在Python中,有多种方式可以实现定时任务。以下是一些常见的解决方案:1.Celery概述:Celery是一个强大的异步任务队列,支持延迟执行和定时任务。特点:支持多种消息代理,如RabbitMQ和Redis。可以使用celerybeat来调度定时任务。支持任务重试、结果存储等功能。适用......
  • Python库有哪些?如何安装?
    Python是一门非常高级的编程语言,且独具特色,是许多编程语言无法比拟的,比如第三方库。Python的第三方库非常丰富,它们为Python提供了丰富的功能和特性,那么常用的Python库有哪些?我们来看看吧。1、数据处理Numpy:用于科学计算和数组操作。Pandas:用于数据帧和时间序列操......
  • 【python】时间和日期
    时间截时间截(timestamp),能表示一份数据在某个特定的时间之前已经存在的,完整的,可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。时间截是值格里尼治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00秒)到现在的总秒数。时间截在电子商务,金融活动上有着广泛......
  • Python打包完成后报错,如何解决?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python打包处理数据的问题,问题如下:打包完成后报错:发生错误:Missingoptionaldependency'openpyxl'.Usepiporcondatoinstallopenpyxl.哪位大佬帮我看一下错在哪了?二、实现过程后来......
  • # yyds干货盘点 # Python打包完成后报错,如何解决?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python打包处理数据的问题,问题如下:打包完成后报错:发生错误:Missingoptionaldependency'openpyxl'.Usepiporcondatoinstallopenpyxl.哪位大佬帮我看一下错在哪了?二、实现过程后来【隔壁......
  • [开题报告]flask框架基于web安全的大学生心理教育平台(python+程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展与变革,大学生群体面临着前所未有的学业压力、就业竞争、人际关系及自我认知等多方面的挑战,这些因素对大学生的心理健康......
  • [开题报告]flask框架基于web的毕业生就业信息管理系统eua8u(python+程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及与毕业生数量的逐年增加,毕业生就业问题成为社会关注的焦点。传统的就业信息获取与管理方式已难以满足当前高效、精准的......
  • [开题报告]flask框架基于技术的大学生兼职网站(python+程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和就业市场的竞争加剧,越来越多的大学生选择在课余时间参与兼职工作,以积累经验、锻炼能力并补贴生活费用。然而,传统的兼......
  • CITS1401 Computational Thinking with Python
    CITS1401ComputationalThinkingwithPythonProject1,Semester2,2024DepartmentofComputerScienceandSoftwareEngineeringTheUniversityofWesternAustraliaCITS1401ComputationalThinkingwithPythonroject1,Semester2,2024(Individualprojec......
  • python怎么将将日期yyyyMMdd转换为yyyy-MM-dd格式?
    一、代码实现fromdatetimeimportdatetime#日期格式转换defconvert_date_format(date_str):#假设date_str是有效的yyyyMMdd格式date_obj=datetime.strptime(date_str,'%Y%m%d')returndate_obj.strftime('%Y-%m-%d')#示例使用date_str='20......