找回密码
 会员注册
查看: 33|回复: 0

Python-利用OCR技术提取视频台词、字幕

[复制链接]

2

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-9-4 16:37:32 | 显示全部楼层 |阅读模式
目录一.引言二.视频处理1.视频样式2.视频截取◆裁切降帧◆处理效果3.视频分段三.OCR处理1.视频帧处理2.文本识别结果3.后续工作与优化◆识别去重◆多线程提效◆片头片尾优化四.总结一.引言视频经常会配套对应的台词或者字幕,通过文本与字幕可以更好地理解视频内容。本文介绍如何使用moviepy库处理视频并使用paddleocr库实现视频文本识别,从而获取视频中出现的文字信息。二.视频处理1.视频样式样例中我们以老电视剧为例,处理其剧集信息并获取对话文本。视频中字幕展示位置位于视频正下发居中位置,为了减少OCR的识别工作量,提高OCR识别成功率,我们会优先对视频截取,只保留下方台词部分的关键帧信息。2.视频截取◆裁切降帧frommoviepy.editorimport*#对视频进行裁剪与缩放clip=VideoFileClip('/Users/Desktop/1.mkv')print("OriFPS:{}Duration:{}Height:{}Width:{}".format(clip.fps,clip.duration,clip.w,clip.h))cut_clip=clip.crop(y2=clip.h-11,height=70)cut_clip=cut_clip.set_fps(3)print("CutFPS:{}Duration:{}Height:{}Width:{}".format(cut_clip.fps,cut_clip.duration,cut_clip.w,cut_clip.h))-VideoFileClip电影文件的视频剪辑类,必传的只有filename即视频文件的名称。它支持多种视频格式:.ogov、.mp4、.mpeg、.avi、.mov、.mkv等。这里下载的使用的是.mkv格式。-cropcrop方法用于裁切视频。x1、y1代表裁剪区域的左上角坐标。默认为视频的左上角;x2、y2代表裁剪区域的右下角坐标。默认为视频的右下角。width,height代表裁剪区域的宽度和高度。如果设置了这两个参数,x2、y2的值将被忽略。center代表裁剪区域的中心点坐标,如果设置了这个参数,x1、y1、x2、y2的值将被忽略。所有坐标值都是以像素为单位的。当剪辑是图像剪辑时,可以进一步通过指定参数来优化裁剪效果。上面的参数含义表示将clip视频的底部向上11个像素开始裁剪,向上裁剪出70个像素高度的新片段,获得剪辑后的新视频。-set_fpsset_fps参数是用于设置帧率的。帧率是指在视频中每秒钟展示多少个连续的画面,单位是fps(framespersecond),译为'每秒帧数'。如果你想让视频播放得更流畅,可以将帧率设置得更高。原始视频帧率较高FPS=25,由于OCR识别相同帧内容可能相同,所以我们set_fps(3)以降低需要处理的视频帧数量,提高效率。◆处理效果OriFPS:25.0Duration:2625.36Height:704Width:528CutFPS:3Duration:2625.36Height:704Width:70通过打印视频关键信息,我们得到裁切后的视频参数,可以看到新的视频宽度已缩减,且FPS帧率也下降为每秒3帧:这里不同视频字母位置不同,大家可以本地测试几次,就能大致选到合适的位置参数。3.视频分段epoch=10step=cut_clip.duration/epoch#截取多个片段clips=[]index=0whileindex
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-12 19:51 , Processed in 1.302526 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表