一、python图片转文字
1、引言
pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式
2、环境配置
- python3.6+
- PIL库
- 安装Google Tesseract OCR
3、安装pytesseract
使用pip 或 pip3
pip install pytesseract==0.3.10
pip install pillow==10.4.0
4、安装Google Tesseract OCR
Tesseract是一个开源文本识别 (OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本
Tesseract OCR github地址:https://github.com/tesseract-ocr/tesseractWindows Tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/Mac和Linux安装方法参考:https://tesseract-ocr.github.io/tessdoc/Installation.html
安装完成后
添加PATH环境变量,可方便的执行tesseract命令
D:\Development\Tesseract-OCR ## 自己的安装路径
添加TESSDATA_PREFIX变量名,将语言字库文件夹添加到变量中
D:\Development\Tesseract-OCR\tessdata ## 自己的安装路径
3、使用pytesseract转换图片
import pytesseract
from PIL import Image
from PIL import ImageEnhanceret = {'code': 100, 'msg': None, 'data': None}
class TextExtraction(APIView):# 图片转文字def get(self, request):# 加载图像image = Image.open('\media\image\\2.jpg')# 增强图片对比度enhancer = ImageEnhance.Contrast(image)img_contrast = enhancer.enhance(2.0)text = pytesseract.image_to_string(img_contrast, lang='chi_sim')print(text)ret['data'] = textreturn Response(ret)if __name__ == '__main__':te = TextExtraction()te.as_view()
二、语音转文字
使用百度语音识别Aip
1、注册登录百度AI开放平台
登录百度AI开放平台,在控制台—人工智能–语音技术
获得APPID、API KEY、SECRET KEY
2、安装百度Aip
pip install Baidu-Aip==4.16.13
3、使用百度Aip转语音
from aip import AipSpeechret = {'code': 100, 'msg': None, 'data': None}
class SpeechRecognition(APIView):# 语音转文字 使用百度语音识别def post(self, request):# 百度语音识别try:# 设置 APPID、API Key 和 Secret KeyAPP_ID = ''API_KEY = ''SECRET_KEY = ''# 初始化 AipSpeech 对象client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)# 设置音频文件的位置audio_file = '\media\\audio\\16k.wav'# 读取音频文件with open(audio_file, 'rb') as fp:audio_data = fp.read()# 识别音频文件res = client.asr(audio_data, 'wav', 16000, {'dev_pid': 1536,})print(res)if res['err_no'] == 0:print(res['result'][0])ret['data'] = res['result'][0]else:ret['code'] = 101ret['msg'] = res['err_msg']except Exception as e:ret['code'] = 102ret['msg'] = ereturn Response(ret)
三、speech语音播放
在python中我们可以使用speech模块让计算机进行语音输出
1、安装speech
pip install speech
2、因为speech模块最早是在python 2.x中开发的,因此在python 3.x中并不能够直接使用,我们需要打开它安装后的原始文件,并进行以下调整即可。
speech.py打开后进行定位错误位置并更改,每个人的文件位置可能有差异。因为虚拟环境的创建一般不同,Pycharm中一般是相同的,可以自行查找。接着我们按部就班地更改以下三个位置地源文件。原始文件第157行,print prompt应该改为print(prompt)。
原始文件第59行,thread应该改为_thread。
拖动文件到最后,将263行thread应该为_thread
3、语音输出
import speech
def speach():# 文字转语音speech.say("从前,有一座美丽的大森林,森林里住着许多小动物,它们每天过着无忧无虑的生活。")speech.say("Don't ask me .I have no idea why bug exist again")
四、文字转音频并保存输出
Pyttsx是一个支持Mac OS X、Windows和Linux上常见的文本到语音引擎的Python包。
1、安装pyttsx3
pip install pyttsx3
2、保存音频语音输出
import pyttsx3def pyttsx3(text, language, rate, volume, filename, sayit=0):# 参数说明: 六个重要参数,阅读的文字,语言(0-英文/1-中文),语速,音量(0-1),保存的文件名(以.mp3收尾),是否发言(0否1是) engine = pyttsx3.init() # 初始化语音引擎engine.setProperty('rate', rate) # 设置语速# 速度调试结果:50戏剧化的慢,200正常,350用心听小说,500敷衍了事engine.setProperty('volume', volume) # 设置音量voices = engine.getProperty('voices') # 获取当前语音的详细信息if int(language) == 0:engine.setProperty('voice', voices[0].id) # 设置第一个语音合成器 #改变索引,改变声音。0中文,1英文(只有这两个选择)elif int(language) == 1:engine.setProperty('voice', voices[1].id)if int(sayit) == 1:engine.say(text) # pyttsx3->将结果念出来elif int(sayit) == 0:passengine.save_to_file(text, filename) # 保存音频文件print(filename, "保存成功")engine.runAndWait() # pyttsx3结束语句(必须加)engine.stop() # pyttsx3结束语句(必须加)if __name__ == '__main__':text = """从前,有一座美丽的大森林,森林里住着许多小动物,它们每天过着无忧无虑的生活。有一天,森林里来了几个伐木工人,他们拿着斧头和锯子,把一棵棵树给砍倒了。几天下来,裸露的土地不断扩大,森林里的树木不断减少。大象看了之后非常生气,他和几个好朋友决定把这些伐木工人抓起来,送到动物法庭上。第二天,大象他们就把伐木工人给抓了起来,送到了动物法庭上。许多旁观者都纷纷议论起来,猴法官说:“安静,安静,大象你们把这些人抓来是怎么回事?”大象说:“这些人乱砍树木,破坏我们的家园。大象的好朋友小猴说:“对呀,他们把树给砍光了,我们就不能在树上荡秋千了。”小鸟也说:”猴法官,要是没有树木,我们就不能筑巢了。长颈鹿说:“要是没有树木,我们就吃不到树叶了,我们会饿死的。”听到这里,猴法官对伐木工人说:“你们乱砍树木是不对的,没有了树木,我们动物就无法生存,同样也会给你们人类带来灾难的。”听了这些话,伐木工人觉得很惭愧,知道自己错了,他们保证以后不再乱砍树木破坏森林了,还在森林入口立了一块告示牌,上面写着:“保护森林,人人有责。”从此以后,人们不再破坏森林,动物和人类和平相处,大家都过着幸福、快乐的生活。"""pyttsx3_debug(text=text, language=0, rate=200, volume=0.9, filename="\media\\audio\ptttsx3中文测试.mp3", sayit=1)