工具-python实现电影字幕的自动翻译

article/2025/8/20 6:55:35

文章目录

  • 前言
  • 思路
  • 效果如图
  • 实现
    • 第二种方案
    • 第一种方案
    • 第一种方案
  • 中英文翻译
  • 想白嫖中英文翻译?
  • 如何将ocr识别到的没有空格文本正确分割?
  • python截屏

前言

看一些电影,发现只是标注了字幕而没有中文翻译,当然也没有字幕文件,而仅仅是视频上有外文字幕而已
那么能否在看电影的时候让这些字幕自动显示为翻译的中文呢?
当然可以的

思路

总体的方法如下:
1,第一步,将显示字幕的区域截取下来,(如果你看电影会发现字幕总是显示在下面的一个矩形区域里),然后当你看电影的时候,自动识别到矩形框范围内是否有字幕,如果有就自动截取下来,然后将这张图片传到下一步
2,第二步,使用ocr识别,识别出外文字幕,得到外文文本
3,第三步,使用网络翻译接口,将外文文本翻译成中文,得到中文文本后将文本显示在一个半透明的矩形窗口出来在你想要的位置

效果如图

在这里插入图片描述
我用一个文本文档里的英文,模拟了字幕出现的位置,然后我将中文翻译显示窗口放到了上面,这样当我看电影的时候,下面出现英文,上面就自动显示中文字幕了,而不需要必须是中文翻译过的电影

实现

抛开实现思路不谈,难点其实就在于ocr对图片的识别上,如果能够对文本精准的复现,翻译效果当然好,但凡错一个字幕,就可能错很多,中文的优越性就出来了,中文自带纠错能力,而英文一个空格,一个字母错了,翻译软件当即就傻了,翻译不出来
这里重复一下思路:
先实现第一步字幕位置截取,非常便捷的是python提供了一个工具包,只需要设定截取的开始坐标和结束坐标就能自动截取并保存图片
第二步ocr识别比较麻烦,因为ocr识别效果比较慢,而且效果通常不理想,比如有时识别到的文本没有空格,这会给翻译带来巨大的麻烦,中文没有空格无所谓,英文没有空格那真是灾难,幸运的是ocr识别的效果现在有神经网络的加持,识别效果已经有了很大提升,只是比较吃电脑配置,配置环境是最令人麻烦的了
第三步,将识别到的文本翻译成中文比较简单,比如使用有道词典的接口就可以了
最后就是将翻译到的中文文本展示在一个窗口上,这一步很简单

当然这里有两份实现方案,
第一种就是我上面说的,先截图,然后ocr识别到文本,然后文本翻译成中文
第二种方案,则是先截图,然后将截图传递到有道的截图翻译接口,直接返回中文
这里先说第二种方案,因为有道的截图翻译太好用了,只需要截图,然后调接口,当然有次数限制

第二种方案

有道截图翻译接口


# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import base64
import hashlib
import json
from imp import reload
import tkinterfrom PIL import ImageGrab
from PIL import Image
reload(sys)YOUDAO_URL = 'https://openapi.youdao.com/ocrtransapi'
APP_KEY = '你申请的有道截图翻译key'
APP_SECRET = '你申请的有道截图翻译secret'
top = tkinter.Tk()
top.title("字幕")
#设定显示字幕的窗口大小,透明度,显示的字体
top.geometry('1200x50+100+0')
top.attributes("-alpha",0.5)
TText= tkinter.Text(top, font=('Arial', 30),  width=50, height=10)
TText.grid(row=1, column=0, rowspan=10, columnspan=10)def truncate(q):if q is None:return Nonesize = len(q)return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]def encrypt(signStr):hash_algorithm = hashlib.md5()hash_algorithm.update(signStr.encode('utf-8'))return hash_algorithm.hexdigest()def do_request(data):headers = {'Content-Type': 'application/x-www-form-urlencoded'}return requests.post(YOUDAO_URL, data=data, headers=headers)def connect(src):TText.delete(1.0,'end')f = open(src, 'rb')  # 二进制方式打开图文件q = base64.b64encode(f.read()).decode('utf-8')  # 读取文件内容,转换为base64编码f.close()data = {}data['from'] = 'auto'data['to'] = 'zh-CHS'data['type'] = '1'data['q'] = qsalt = str(uuid.uuid1())signStr = APP_KEY + q + salt + APP_SECRETsign = encrypt(signStr)data['appKey'] = APP_KEYdata['salt'] = saltdata['sign'] = signresponse = do_request(data)print(response.content)print(json.loads(response.content))a=json.loads(response.content)['resRegions']myresult=""for i in a:myresult=myresult+ i['tranContent']TText.insert(1.0, myresult)
def do():#截图放置的路径src = r"C:\\Users\\Administrator.DESKTOP-KMH7HN6\\Downloads\\imge_temp\\1.jpg"#截图坐标的起始位置im = ImageGrab.grab((204, 603, 1270, 759))im.save(src, 'JPEG')connect(src)
btton=tkinter.Button(top, text="识别", width=10,command=do)  # 调用内部方法  加()为直接调用
btton.grid(row=1, column=900)
# do()
top.mainloop()

第一种方案

这里的ocr识别,使用的是easyocr工具包
实际效果不理想,我仅仅是测试了一下它对文本的识别效果,非常失望
背景如果是纯色还行,稍微复杂的背景,识别特别垃圾
纯色背景比如pdf文本识别还是可行的,配置环境看

https://zhuanlan.zhihu.com/p/342686109
# 导入easyocr
import easyocr
# 创建reader对象
reader = easyocr.Reader(['ch_sim','en'])
# 读取图像
result = reader.readtext("C:\\Users\\Administrator.DESKTOP-KMH7HN6\\Downloads\\imge_temp\\1.png")
# 结果
print(result)

第一种方案

我尝试了其他ocr识别工具包pytesseract
传说有神经网络加持,效果非常好,我配置了半天环境,识别出来的效果非常失望
背景如果是纯色还行,稍微复杂的背景,识别特别垃圾
不过,如果你想识别pdf的文本,那这个就对了
具体的配置链接看

https://zeroingpython.top/python%e7%9f%a5%e8%af%86%e5%88%86%e4%ba%ab/%e4%b8%80%e4%b8%aa-python-%e5%8c%85-pytesseract-%ef%bc%8c%e5%87%a0%e8%a1%8c%e4%bb%a3%e7%a0%81%e5%8f%af%e5%ae%9e%e7%8e%b0-ocr-%e6%96%87%e6%9c%ac%e8%af%86%e5%88%ab%e6%8a%80%e6%9c%af%ef%bc%81/90/
import pytesseract
import cv2
img_path = "C:\\Users\\Administrator.DESKTOP-KMH7HN6\\Downloads\\imge_temp\\1.png"
# 下面一行代码很重要
tessdata_dir_config = '--tessdata-dir "C://my_software//python_ocr//tessdata"'
im = cv2.imread(img_path)
img = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
text = pytesseract.image_to_string(img, lang='eng', config=tessdata_dir_config, )
print(text)

测试下来,还是有道香

中英文翻译

我就不重新造轮子了,配置看

https://blog.csdn.net/weixin_38819889/article/details/103602436

想白嫖中英文翻译?

看轮子

https://blog.csdn.net/hujingshuang/article/details/80177784

如何将ocr识别到的没有空格文本正确分割?

看轮子

https://blog.csdn.net/u012052268/article/details/79402474

python截屏

看轮子

https://blog.csdn.net/a180736/article/details/79159859

你抄我,我抄你,大家甜蜜蜜


http://chatgpt.dhexx.cn/article/jBkIjZkS.shtml

相关文章

如何让纯英文字幕的视屏 实时翻译

情景&#xff1a; 你有一个视屏&#xff0c;只有英文字幕&#xff0c;恰好像我一样英文不怎么样&#xff0c;可以试着用下面的方法。当然&#xff0c;对应的翻译是机翻的&#xff0c;接受不了请忽略。 步骤&#xff1a; 需要将原视频下载下来&#xff1b;有的时候&#xff0c…

剪映PC版英文字幕翻译最新方法(中英互译)

原文地址 剪映PC版英文字幕翻译最新方法&#xff08;中英互译&#xff09; – 方包博客 – java|python|前端开发|运维|电商|ui设计剪映PC版英文字幕翻译最新方法&#xff08;中英互译&#xff09;https://www.fang1688.cn/ziyuan/3431.html 我的是剪映 v3.3.0版本。旧版不支持…

推荐一款自己开发的剪映字幕翻译工具

点击上方"优派编程"选择“加入星标”&#xff0c;第一时间关注原创干货 最新的剪映英文转中文字幕翻译工具 https://www.fang1688.cn/python/3259.html 小编方包今天介绍剪映翻译工具的教程 之前的那款剪映字幕翻译工具不是方包我本人写的。听各位神通广大的网友们反…

字幕翻译,如何合并和拆分过分断句

我时常会接到字幕翻译项目&#xff0c;大多是英到中。如果字数比较多&#xff0c;我通常会问客户能不能增加一两个小时的预算&#xff0c;原因很简单&#xff1a;过分断句(over-segmentation)对译员很不友好&#xff0c;特别是在使用CAT (computer-aided translation)的情况下…

视频字幕翻译

字幕是指以文字形式显示电视、电影、舞台作品中的对话等非影像内容&#xff0c;也泛指影视作品后期加工的文字。在电影银幕或电视机荧光屏下方出现的解说文字以及种种文字&#xff0c;如影片的片名、演职员表、唱词、对白、说明词以有人物介绍、地名和年代等都称为字幕。 近年来…

英文视频实时字幕翻译

本视频是基于livecaption这个软件&#xff08;免安装&#xff09;来实现的。软件下载地址阅读后面可见。 使用阿里云进行语音识别&#xff0c;使用腾讯云进行实时翻译。 一、阿里云 阿里云官网&#xff1a;https://www.aliyun.com/ 没有注册和实名认证的&#xff0c;请注册…

翻译视频字幕的软件叫什么?安利这几个软件给你

如今有很多小伙伴都喜欢追一些韩剧、美剧、泰剧等等外国影片&#xff0c;但是同时也会出现一个问题&#xff0c;那就是有些片段听不懂的问题&#xff0c;很多的影片其实是没有中文字幕的&#xff0c;这时候&#xff0c;很多小伙伴就会直接放弃观看了&#xff0c;其实我们只需要…

怎么把英文字幕翻译成中文?快把这些方法收好

在日常的学习工作中&#xff0c;我们偶尔会接触到一些英文文件&#xff0c;这些文件里面通常都会夹杂着一些比较深奥的词汇。小伙伴们平时遇到这些看不懂的词汇会怎么办呢&#xff1f;是一个词一个词的翻译吗&#xff1f;这样子是可以理解词的意思&#xff0c;可是要带入句子中…

使用Trinity 软件进行拼接(无参转录组)

文章背景&#xff08;此背景非彼背景&#xff09; 本文主要是对Trinity软件的背景、安装以及参数做一个详细的介绍。别问为什么没有接着做 02——转录组分析——软件下载&#xff1b;因为发现师兄留下来的数据是需要用无参转录组进行分析的。。。。内心真的毫无波澜。。。。。…

[转]魔兽世界私服Trinity,从源码开始

转自&#xff1a;http://log4think.com/setup_wow_private_server/ 缘起因由 在一个无所事事的周末下午&#xff0c;突然想起魔兽世界&#xff0c;官方的账号很久没有上了&#xff0c;里面的大小号现在连满级都不是。以前曾经搭过传奇和星际争霸战网的私服自娱自乐&#xff0c;…

分析方法升级三代测序辅助,优化无参转录组测序策略

分析方法升级&三代测序辅助&#xff0c;优化无参转录组测序策略 无参转录组拼接升级 Corset 让“基因”概念更准确 在无参转录组项目中,利用主流软件 Trinity 进行 De novo 拼接转录本, 而后选取最长的转录本作为 unigene 进行后续分析。 但是研究表明&#xff0c;完全以…

使用Trinity进行转录组组装

Trinity Trinity是Broad Institute和Hebrew University of Jerusalem开发的RNA-Seq数据 转录组组装工具&#xff0c;包括三个模块&#xff0c; Inchworn(尺蠖): 将RNA-seq数据组装成单个转录本&#xff0c;通常是主要转录亚型的全长转录本Chrysalis(蛹): 这一步将上一步得到co…

TrinityCore魔兽世界服务器-环境搭建(Debian11)

TrinityCore是模拟魔兽世界&#xff08;World of Warcraft&#xff09;的开源项目。 我这里学习搭建环境&#xff0c;基于以下&#xff1a; 客户端World of Warcraft 3.3.5(12340或13930版本)服务端TrinityCore3.3.5分支 下面是我自己用的客户端&#xff08;12340&#xff0…

魔兽世界私服Trinity,从源码开始

缘起因由 在一个无所事事的周末下午&#xff0c;突然想起魔兽世界&#xff0c;官方的账号很久没有上了&#xff0c;里面的大小号现在连满级都不是。以前曾经搭过传奇和星际争霸战网的私服自娱自乐&#xff0c;也听说过魔兽世界有开源的服务端模拟&#xff0c;既然兴致来了就小小…

魔兽世界开服教程wow服务器框架Trinirycore构建

首先明杰先给各位普及一下TrinityCore是什么 TrinityCore 是c实现MMORPG框架 来自MaNGOS&#xff0c;大型网络对象服务&#xff0c;随着时间的推移&#xff0c;该项目代码广泛的优化&#xff0c;改善和清理代码。 需要准备的架设工具&#xff1a; 端&#xff08;版本&#xff0…

Trinity(3)

转自&#xff1a;http://blog.sina.com.cn/s/blog_83f77c940102v7xu.html 1:分析流程图如下 2: 首先就是将样本的reads合并在一起命令如下&#xff1a; cat 1M_READS_sample/*.left.fq > reads.ALL.left.fq cat 1M_READS_sample/*.right.fq > reads.ALL.right.fq 3:开始…

Trinity使用流程

原文地址&#xff1a;http://www.plob.org/2014/12/22/8826.html 1:分析流程图如下 2: 首先就是将样本的reads合并在一起命令如下&#xff1a; 1 cat 1M_READS_sample/*.left.fq > reads.ALL.left.fq 2 cat 1M_READS_sample/*.right.fq > reads.ALL.right.fq 3:开始拼接 …

安装trinity、解决报错

生信软件安装 Trinity安装 文章目录 生信软件安装一、安装trinity报错二、解决报错 一、安装trinity报错 解压代码&#xff1a; tar -zxvf trinityrnaseq-v2.14.0.FULL_with_extendedTestData.tar.gz进入软件文件夹 cd trinityrnaseq-v2.14.0/然后输入make进行安装&#xf…

【Free RTOS简介】

free rtos学习笔记之整体简介 简介 free rtos实际上是分为两个部分&#xff0c;即free和rtos&#xff0c;其中free是免费的意思&#xff0c;rtos&#xff08;Real Time Operating System&#xff09;则是实时操作系统的意思&#xff0c;连在一起是&#xff0c;这个实时操作系…

缺陷检测~Anomalib

这里说说如何应用Anomalib在数据集不平衡的情况下检测缺陷 Paula Ramos&#xff0c;英特尔 AI 软件布道师&#xff0c;美国 武卓&#xff0c;英特尔 AI 软件布道师&#xff0c;中国 Samet Akcay&#xff0c;英特尔人工智能研究工程师/科学家 在《如何应用Anomalib在数据集不平…