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

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图片。

 

posted @ 2024-03-12 09:39  蛙仔  阅读(107)  评论(0编辑  收藏  举报