首页 > 编程语言 >python 使用PaddleOCR读取图片文字,并用pyttsx3转为音频

python 使用PaddleOCR读取图片文字,并用pyttsx3转为音频

时间:2024-03-12 09:45:57浏览次数:38  
标签:pyttsx3 python PaddleOCR result text ocr

python小白,纯纯小白,很久之前看了一遍菜鸟官网,但实在没有应用场景,所以过目即忘。最近工作不是很忙,给我出了个题目,觉得挺有意思,就玩一玩。

 

 所以关键点就是,图片提取出文字,然后文字转音频。

1. 图片提取文字,PaddleOCR

出题人士,给出了git上一个ocr的工具库,支持图文信息的抽取。用的PaddleOCR,git地址:https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file

 步骤1:搭建python环境,这个就不说了,可以直接去菜鸟官网按照文档指示操作配置。配置好后,执行【python --version】查看版本。

步骤2:安装ocr工具库,首先执行【python -m pip install --upgrade pip】升级pip,然后执行【python -m pip install paddleocr】。

出问题了,大致意思是【PyMuPDF】出问题了,下载的版本跟当前python版本对不上,git上有提出相关的issues,地址是:https://github.com/PaddlePaddle/PaddleOCR/issues/7934,在这个问题下面,也找到了解决方法,【python -m  pip install "paddleocr>=2.0.1" --upgrade PyMuPDF==1.21.1

步骤3:前置弄好啦,开始写代码啦。

首先创建一个文件夹,在文件夹里放张图片,以及创建一个demo.py文件。我放的是下面的图片。

# demo.py
from paddleocr import PaddleOCR
text=""
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './test.png'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    text+=res[1][0]
    print("打印文字-----:",res[1][0])

执行【python demo.py】,打印出识别图片的文字内容。

 以上,图片提取文字就算是完成啦。

2. 文字转音频,pyttsx3

文字转音频的工具和方法很多,一开始用的是gtts,但总是报错连接不上,不知道是不是我网络不行,然后就换上了pyttsx3。

步骤1:安装pyttsx3,执行【python -m pip install pyttsx3】。

步骤2:开始写代码啦。

# demo.py
import pyttsx3
from paddleocr import PaddleOCR
text=""
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './test.png'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    text+=res[1][0]
    print("打印文字-----:",res[1][0])
# 读出音频并且生成mp3文件
engine = pyttsx3.init()
# 这个会立马播放音频哦,记得带上耳机
engine.say(text)
engine.setProperty('volume',0.9)
engine.save_to_file(text,"demo.mp3")
engine.runAndWait()
    

执行【python demo.py】,当前文件夹下面会自动生成一个demo.mp3文件。

以上,python 小白的图片读取文字,并将文字转为音频的小示例就做好啦。

3. 额外的生成结果图片,后面的数字是识别的可信度

生成图片用到工具库【PIL】,现在好像换名叫pillow。

 

import pyttsx3
from paddleocr import PaddleOCR,draw_ocr
from PIL import Image
text=""
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './test.png'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    text+=res[1][0]
    print("打印文字-----:",res[1][0])
# 读出音频并且生成mp3文件
engine = pyttsx3.init()
# 这个会立马播放音频哦,记得带上耳机
engine.say(text)
engine.setProperty('volume',0.9)
engine.save_to_file(text,"demo.mp3")
engine.runAndWait()

# 生成结果图片
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

执行【python demo.py】,当前文件夹下面会自动生成一个result.jpg图片。

 

标签:pyttsx3,python,PaddleOCR,result,text,ocr
From: https://www.cnblogs.com/grow-up-up/p/18066554

相关文章

  • UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添
    UVM宏解释UVM_DISABLE_AUTO_ITEM_RECORDINGhttps://blog.csdn.net/MGoop/article/details/127295965itemrecord的方法主要是用于记录事务信息的,原理是调用accept_tr,begin_tr,end_tr。似乎和波形上显示出各个事务相关。默认情况下,在调用get_next_item()和item_done()时自动......
  • 轻松驾驭Python格式化:5个F-String实用技巧分享
    F-String(格式化字符串字面值)是在Python3.6中引入的,它是一种非常强大且灵活的字符串格式化方法。它允许你在字符串中嵌入表达式,这些表达式在运行时会被求值并转换为字符串,这种特性使得F-String在编写Python代码时能够更简洁、更直观地处理字符串。本文总结了5个实用的F-String技......
  • day20240311周一python学习共100课
    day20240311周一python学习共100课。今天学到了第几课?听懂了吗?今天学10课。学3课,5课。买的好,买的少。父母家境好的家庭,会更轻松。------》第4课:编程语言就是把人的语言,转换成计算机机制能听得懂的语言(二进制语言)。1.写代码2.翻译代码到二进制。 跟着视频操作一遍就......
  • python代码小题
    习题一:逻辑运算=>输入三角形的3边,如果两边的长度大于第三条边,则代表是一个合法三角形#a=float(input("边长1="))#b=float(input("边长2="))#c=float(input("边长3="))#print(a+b>canda+c>bandb+c>a) 习题二:期末考试结束了,根据学员成绩求学员等级:90分及以上则......
  • 6.Python操作数据库
    1.操作mysql数据库importpymysql#连接数据库conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",database="a",autocommit=True)#创建游标进行数据库操作以及获取数据cursor=conn.cursor(cursor=pymysql.cursors.DictCu......
  • Python全栈开发武沛齐day07模块
    day07模块1.知识回顾• 模块的分类-自定义模块内置第三方模块• 自定义模块– 关于拆分crmutilsencrypt.pydb.pymessage.pyapp.py– 文件夹和文件(扩展)py文件->模块文件夹->包py2的包:内部必须有一个init.pypy3的包:无限制– 导入模块• 去哪里......
  • Python全栈开发武沛齐day06模块
    day06模块今日概要:环境搭建、基础语法、数据类型、函数->基本操作模块,别人帮我们写好的一大堆的功能代码。模块:-自定义模块-功能简单,一个py文件就能实现功能。-功能多or负责,一个py文件的功能拆分到多个py文件-内置模块,Python内部已经携带。 importos impo......
  • 实现Python pdf切割 ValueError: seek of closed file
    参考网上的教材,实现pdf文件的切割,提示一个问题ValueError:seekofclosedfile原来是pdf文件关闭导致的问题。将其改成一个程序就解决了。importPyPDF2pdf_path=r'E:\zhuanxie\jpm\2.pdf'out_path=r'E:\zhuanxie\jpm\23.pdf'#切割PDF文件start_page=1end_page=......
  • python打印三角形图案
    格式如图: 代码实现:deftriangle(row):foriinrange(1,row+1):forxinrange(i):print('*',end='')print()foriinrange(1,row+1):forxinrange(row-i):print('',end=&#......
  • python3实现xmind用例转excel
    1importxmindparser2importxlwt,xlrd3fromxlutils.copyimportcopy4fromxlwtimportWorksheet5fromxmindparserimportxmind_to_dict6importdatetime7importos8importre9importtraceback1011#当前时间戳12a=datetim......