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