目录

一、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/

进入下载页面后,下载正式稳定版本,文件名为“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、输出识别后的字幕文字

(二)代码实现

选取《让子弹飞》的片段进行识别,并输出字幕信息。

以下为视频画面:

实现代码如下:

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<frame_count:cap.set(cv2.CAP_PROP_POS_FRAMES, i)_, frame = cap.read(i)shape = frame.shapeprint(shape)#输出待处理视频的尺寸信息img=frame[635:715, 100:1200]#调整截图的尺寸plt.imshow(img)plt.axis("off")plt.show()#显示截取后的图片img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#将截取的图片转为灰度图#cv2.imshow("Frame-2:Gray", img)#显示灰度图_, img= cv2.threshold(img, 220, 255, cv2.THRESH_BINARY)# 图像,阈值,映射的最大值,使用算法一般为cv2.thresh_binary#cv2.imshow("Frame-3:Binary", img)#显示灰度图tessdata_dir_config = '--tessdata-dir "D:\\Python lib\\Tesseract-OCR\\tessdata"  --psm 7 -c preserve_interword_spaces=1'#选取用于文字识别的模块word = pytesseract.image_to_string(img,lang='chi_sim',#config=' --psm 7 -c preserve_interword_spaces=1')config=tessdata_dir_config)print(word)#输出识别后文字i=i+24*5#对待识别帧数进行定义,每120帧识别一次if cv2.waitKey(10) & 0xff == ord("q"):break#设置停止程序的操作cap.release()cv2.destroyAllWindows()

输出结果如下:

文字识别的效果和准确度还是不错的。

三、总结

在使用上述代码进行字幕识别时,需要不断调整截取字幕的位置。由于不同视频的字幕位置不同、画面比例不同,因此识别不同的视频需要使用不同的参数。

经过多次比较,发现当字幕位于截图中心时,识别效果最好。且字幕与画面不重叠的情况下,识别效果最好。

其次就是要根据不同的字幕类型,采取不同的画面处理方法。例如,有的字幕本身比较淡,不是纯白色的,这时再进行边缘二值化就容易导致字幕不完全,最终识别的效果欠佳。

解决思路:在进行最终识别前,先将灰度化、二值化的字幕截图输出,看看两者的效果,再去选择合适的处理方法。例如,下方二图,上面为灰度化处理的图片,下面为二值化处理的图片。经过二值化处理的图片明显存在缺失,不容易识别,因此可以不选二值化,仅选择灰度化即可。

Python软件设计基础 第八节-Tesseract-Ocr视频字幕提取相关推荐

  1. python学习⑥|基于tesseract的视频字幕提取

    文章目录 一.准备工作 1.正常流程 2.持续报错及解决 jupyter持续路径报错 解决jupyter环境变量问题 如何找到特定的路径 二.正式开始 1.最基本的识别-从读图开始 基本思路 2.提取 ...

  2. 如何用python实现视频字幕提取?

    要用Python实现视频字幕提取,需要用到一些第三方库.以下是一种使用Python和FFmpeg和pytesseract的方法: 1.安装FFmpeg和pytesseract 首先需要安装FFmpeg ...

  3. 哪些视频字幕提取软件好用?分享这三款好用的软件

    在当前活到老学到老的学习氛围下,许多学习者都会去网络找一些外语类视频来进行学习,进一步提升自我,但常遇到一些理解不了的视频内容,这时候只需使用一些软件将字幕提取出来,就可以帮助我们更轻松的跨过语言障碍 ...

  4. python基于ocr的视频字幕提取

    导读 在无数次的996加班后的下午,忽然听见了QQ的震动,我发现有人居然给我发消息~原来是我的妹妹给我发来了消息,内容如下: 她现在正兼职帮学校帮老师配教学视频的字幕,他们配上去了,但是老师又有一个奇 ...

  5. 视频字幕添加软件有哪些?这有视频字幕添加的软件

    随着社交网络和短视频平台的兴起,视频内容的需求也越来越高.在视频制作和编辑过程中,添加字幕是提高视频质量和增强内容吸引力的重要手段之一.那你知道视频字幕添加软件有哪些吗? 本文将介绍三款软件:视频转文 ...

  6. Mooc视频字幕提取

    最近深感网课作业的压力,尤其是思政课程,看视频实在过于难受 因此想要将mooc视频的内容提取字幕,以便于直接查看 写在最前 此教程需要用到付费软件:Dowine Step 1 寻找字幕文件 由于网课的 ...

  7. ffmpeg获取设备支持的分辨率_短视频字幕提取合成超简单,掌握ffmpeg这个小技巧

    引言 现在的短视频非常流行.大多数情况下我们会开着音量或者戴着耳机收看视频.但有些时候不是太方便,如果视频能有一个字幕就好了. 好消息是,字幕制作的软件很专业很好用,而且上手超级简单. 坏消息是,如何 ...

  8. Python软件设计基础 第五节-基于图像相似度比较实现视频分镜

    目录 一.前言 一.基础算法-判断两张图片是否相等/相似 (一)基于相等判断图像是否相同 (二)基于numpy计算图像是否相似 (三)基于哈希判断图像是否相似 (四)基于各种哈希计算图片相似度 1.均 ...

  9. Python软件设计基础 第九节-Open3D模型处理

    目录 一.Open3D介绍 二.Open3D安装 三.Open3D操作 (一)几何学-点云 1.可视化点云 2.KD近邻搜索 3.半径领域搜索 4.混合搜索 5.法向量估计/顶点正态估计 (二)几何学 ...

最新文章

  1. poj 3045 Cow Acrobats (贪心!!不是二分,)
  2. Mocha BSM产品亮点——事件管理
  3. 补习系列(19)-springboot JPA + PostGreSQL
  4. 基于Consul的数据库高可用架构【转】
  5. docker mysql8
  6. 从 Amazon Graviton3 发布,看 2022 云计算的核心方向
  7. hash函数(哈希表)
  8. 概率论中的不等式(Markov不等式、Chebyshev不等式、Jensen不等式)
  9. 大 学 十 年 励志
  10. 名帖299 王铎 行书《书法册页李贺诗四首》
  11. TPTP Web性能监控
  12. c语言寄存器头文件共用重复定义,C语言头文件的使用
  13. 谷歌地图-Google Map
  14. python中括号的作用_python中中括号
  15. Linux 基础之虚拟机创建与系统安装
  16. LeetCode——二叉树
  17. IOS开发UI-------button
  18. 中考计算机考试辽宁,中考考哪些科目(2019辽宁中考科目及分值)
  19. EndNote插入文献闪退
  20. 基于TI器件的电子竞赛常用模拟系统设计与实践

热门文章

  1. Java JDK下载、安装与环境变量配置
  2. SpringBoot 中JPA集成PostgreSql(详细步骤)避坑!
  3. drupal mysql hash密码_【Drupal】如何重置Drupal 7的用户密码
  4. 正版破解软件下载站大全
  5. 807.保持城市天际线
  6. 汇川PLC单位换算及电子齿轮比
  7. iOS中解析json数据
  8. 【JAVA学习笔记】
  9. UML建模——以图书管理系统为例
  10. python的库怎么学习_怎样学习一个Python 库 ?