目录
一、Tesseract-Ocr概述与环境配置
(一)Tesseract-Ocr介绍
(二)Tesseract-Ocr安装
1、程序下载及安装
2、配置环境变量
3、语言配置与程序测试
二、视频字幕提取实现
(一)实现原理
(二)代码实现
三、总结
一、Tesseract-Ocr概述与环境配置
(一)Tesseract-Ocr介绍
Tesseract是一款由HP实验室开发、由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引 擎。Tesseract可以处理很多自然语言,如英语、葡萄牙语等。截止到2015年为止,它可以支持超过100种书面语言,并且可以通过训练学习轻松掌握其他语言。
(二)Tesseract-Ocr安装
1、程序下载及安装
官方网站:https://github.com/tesseract-ocr/tesseract
官方文档:https://github.com/tesseract-ocr/tessdoc
语言包地址:https://github.com/tesseract-ocr/tessdata
下载地址:https://digi.bib.uni-mannheim.de/tesseract/
官方网站:https://github.com/tesseract-ocr/tesseract
官方文档:https://github.com/tesseract-ocr/tessdoc
语言包地址:https://github.com/tesseract-ocr/tessdata
下载地址:https://digi.bib.uni-mannheim.de/tesseract/
进入下载页面后,下载正式稳定版本,文件名为“tesseract-ocr-w64-setup-v5.0.0.20190623.exe”。
下载完成后,在PC上进行安装。安装时要注意路径中不要有中文,避免出现问题。
安装过程可以选择要安装的语言包,如简体中文。但速度较慢,建议通过其他途径下载语言包,并在本地进行安装。
2、配置环境变量
在电脑上按“Win+R”打开命令行,输入“sysdm.cpl”打开设置Path的窗口。
依次选择“高级”-“环境变量”。
在path变量中添加tesseract-ocr的安装路径。
3、语言配置与程序测试
把语言文件“chi_sim.traineddata”拷贝tesseract-ocr安装目录下的tessdata文件夹中,使程序语言显示为中文。并在tesseract-ocr安装目录下打开命令窗口,输入“tesseract -v”命令,对tesseract-ocr的安装进行检测。
出现下图提示,安装配置完成。
二、视频字幕提取实现
(一)实现原理
1、读取视频,并获取视频尺寸,便于查找字幕位置
2、截取字幕所在的区域,存为变量
3、将字幕区域转化为灰度图
4、利用cv2对字幕区域沿X轴方向边缘特征矩阵二值化
5、利用tesseract-ocr中的文字识别模块对处理后的字幕区域进行识别
6、输出识别后的字幕文字
(二)代码实现
1、读取视频,并获取视频尺寸,便于查找字幕位置
2、截取字幕所在的区域,存为变量
3、将字幕区域转化为灰度图
4、利用cv2对字幕区域沿X轴方向边缘特征矩阵二值化
5、利用tesseract-ocr中的文字识别模块对处理后的字幕区域进行识别
6、输出识别后的字幕文字
(二)代码实现
选取《让子弹飞》的片段进行识别,并输出字幕信息。
以下为视频画面:
实现代码如下:
import pytesseract
import cv2
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
#导入第三方库
if __name__ == '__main__':
path = "让子弹飞.mp4"
#定义读取的视频路径
cap = cv2.VideoCapture(path)
frame_count = int(cap.get(cv2.CAP_PROP_frame_COUNT))
print(frame_count)
#计算视频的帧数
i=0
#定义初始的帧数
while i
输出结果如下:
文字识别的效果和准确度还是不错的。
三、总结
在使用上述代码进行字幕识别时,需要不断调整截取字幕的位置。由于不同视频的字幕位置不同、画面比例不同,因此识别不同的视频需要使用不同的参数。
经过多次比较,发现当字幕位于截图中心时,识别效果最好。且字幕与画面不重叠的情况下,识别效果最好。
其次就是要根据不同的字幕类型,采取不同的画面处理方法。例如,有的字幕本身比较淡,不是纯白色的,这时再进行边缘二值化就容易导致字幕不完全,最终识别的效果欠佳。
解决思路:在进行最终识别前,先将灰度化、二值化的字幕截图输出,看看两者的效果,再去选择合适的处理方法。例如,下方二图,上面为灰度化处理的图片,下面为二值化处理的图片。经过二值化处理的图片明显存在缺失,不容易识别,因此可以不选二值化,仅选择灰度化即可。



