Skip to content
caca2331Public

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

flowocr

把视频里出现过的所有文字读出来——不只是底部字幕,还有对话框、名牌、画面上的标注——每条带起止时间(精确到帧), 并按位置自动分成若干条"文字轨"(对白、字幕、界面、水印……)。产物是 SRT,或叠加在原画面上、每条字留在原位的 ASS 字幕,也能直接烧进视频(可以先把原文抹掉)。

用来做什么

  • 画面文字翻译:画面各处的文字都读出来、按位置分好轨;在字幕稿里把原文改成译文,叠加时每条译文留在它原来的位置上。
  • 字幕与原文对齐:游戏、影视常常能找到原文剧本。把读到的字幕对上原文,拿到准确的文本和时间轴,用来做翻译字幕。 原神、崩坏:星穹铁道、绝区零有现成的提取工具,按它的说明自己打出文本包(见相关项目)。

能读什么、在哪跑

  • 文字:识别模型是 PaddlePaddle 的 PP-OCRv6(官方称支持约 50 种语言)。实际验证过的是日文(几十小时实况录像和四款游戏的直播录像)与简体中文; 英文只做过零星试跑;竖排文字没测过。
  • 系统:Windows 10 / 11。有 NVIDIA 显卡时走显卡;没有也能跑,用 CPU,慢一到两个数量级。
  • 另要 ffmpeg(完整构建)。

快速开始

要先装 uv 和完整版 ffmpeg;从源码装、参数和产物说明都在 使用手册。

uv tool install "flowocr[nvidia]"                   # 没有 NVIDIA 显卡用 "flowocr[cpu]"
uv tool update-shell                                # 第一次用 uv tool 时,然后重开终端

有原文剧本时,推荐开启匹配器,使用默认配置,先做到阶段 3 的字幕稿;导入 Aegisub 并加载视频,检查文字、时间和位置,改好保存后再跑阶段 4 渲染特效。 下面以星穹铁道为例,先按 game-text-data 的说明准备文本包,放进 gametext\:

flowocr-ocr video.mp4 --out out\v\v.jsonl           # 阶段 1:读字
flowocr-gamescript out\v\v.jsonl --out out\v\v-ref.json --game starrail
flowocr-tracks out\v\v.jsonl --outdir out\v --tag v --matcher gametext --matcher-ctx game=starrail
flowocr-match out\v\v-tracks.json --matcher gametext --ctx ref=out\v\v-ref.json --out out\v\v-matched.json
flowocr-render out\v\v-matched.json --preset script # 阶段 3:只写 v-jp-main.script.ass,默认画匹配器声明的默认组(台词、名牌、选项…)

在 Aegisub 中检查并保存 out\v\v-jp-main.script.ass,然后用 default 预设出特效字幕:

flowocr-typeset out\v\v-jp-main.script.ass --preset default # 阶段 4:写 v-jp-main.ass
flowocr-burn out\v\v-jp-main.ass                            # 阶段 5(可选):烧进视频,写 v-jp-main.mp4;--inpaint 先抹掉原文

原神 / 绝区零把 starrail 换成 genshin / zzz;没有剧本时省略剧本提取与匹配,用 flowocr-tracks 不带匹配参数建轨,再对 v-tracks.json 运行阶段 3,字幕稿为 v-main.script.ass。

相关项目

  • game-text-data:从原神、崩坏:星穹铁道、绝区零的社区解包数据里提取对白文本(中日英对齐), 打成 flowocr 能直接读的文本包。它只公开提取代码,文本本身不分发——要用的话按它的说明自己打包。

问题与参与

  • 用起来有问题、或者在别的显卡 / 机器上跑出了结果,欢迎开 issue。
  • Pull request 请以 main 为目标。开发环境、代码结构和验证方法见 开发指南,全部文档见 文档地图。
  • 版本变化见 CHANGELOG。

许可

GPL-3.0-or-later,全文见 LICENSE。识别用的 PP-OCRv6 模型由 PaddlePaddle 以 Apache-2.0 发布,来源与我们的改动见 LICENSES/。可选的 TensorRT 后端由用户自己从 NVIDIA 下载、按 NVIDIA 的许可协议使用,flowocr 不分发它(说明)。

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages