flowocr 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flowocr/__init__.py +15 -0
- flowocr/analyze/__init__.py +8 -0
- flowocr/analyze/align.py +151 -0
- flowocr/analyze/build_tracks.py +2886 -0
- flowocr/analyze/cluster_layers.py +155 -0
- flowocr/analyze/game_align.py +652 -0
- flowocr/analyze/gamescript.py +1220 -0
- flowocr/analyze/gtdbundle.py +306 -0
- flowocr/analyze/match.py +67 -0
- flowocr/analyze/matchers/__init__.py +5 -0
- flowocr/analyze/matchers/gametext.py +70 -0
- flowocr/analyze/merge_nameplate.py +178 -0
- flowocr/analyze/models/slot_pair.json +148 -0
- flowocr/analyze/nameplate.py +148 -0
- flowocr/analyze/pair_features.py +168 -0
- flowocr/analyze/pair_model.py +127 -0
- flowocr/analyze/refine_boundaries.py +409 -0
- flowocr/analyze/script_align.py +641 -0
- flowocr/analyze/scriptmatch.py +1018 -0
- flowocr/analyze/slot_learned.py +306 -0
- flowocr/analyze/slot_lines.py +251 -0
- flowocr/analyze/slot_modes.py +143 -0
- flowocr/analyze/slot_pairs.py +562 -0
- flowocr/analyze/slot_veto.py +104 -0
- flowocr/analyze/uigate.py +351 -0
- flowocr/artifacts/__init__.py +5 -0
- flowocr/artifacts/evalkit.py +123 -0
- flowocr/artifacts/matchedio.py +75 -0
- flowocr/artifacts/srtio.py +166 -0
- flowocr/artifacts/tracksio.py +345 -0
- flowocr/extensions.py +77 -0
- flowocr/extract/__init__.py +8 -0
- flowocr/extract/childproc.py +118 -0
- flowocr/extract/decode_proc.py +511 -0
- flowocr/extract/decode_shards.py +574 -0
- flowocr/extract/detpost.py +215 -0
- flowocr/extract/edge_proc.py +314 -0
- flowocr/extract/edge_refine.py +598 -0
- flowocr/extract/fast_det.py +214 -0
- flowocr/extract/ffcheck.py +87 -0
- flowocr/extract/framegrid.py +265 -0
- flowocr/extract/framesource.py +1264 -0
- flowocr/extract/ocr_args.py +754 -0
- flowocr/extract/ocr_complete.py +231 -0
- flowocr/extract/ocr_parallel.py +208 -0
- flowocr/extract/ort_server.py +632 -0
- flowocr/extract/ortclient.py +363 -0
- flowocr/extract/ptsclock.py +150 -0
- flowocr/extract/recdecode.py +78 -0
- flowocr/extract/recort.py +162 -0
- flowocr/extract/recpack.py +94 -0
- flowocr/extract/recpool.py +206 -0
- flowocr/extract/recprep.py +71 -0
- flowocr/extract/refine_video.py +271 -0
- flowocr/extract/regions.py +387 -0
- flowocr/extract/reuse_v2.py +593 -0
- flowocr/extract/run_groups.py +247 -0
- flowocr/extract/run_ocr2.py +1605 -0
- flowocr/extract/supervisor.py +261 -0
- flowocr/extract/timeline.py +84 -0
- flowocr/extract/typewriter_fuse.py +394 -0
- flowocr/models.py +263 -0
- flowocr/output/__init__.py +3 -0
- flowocr/output/export.py +205 -0
- flowocr/output/layout.py +210 -0
- flowocr/output/presets/__init__.py +6 -0
- flowocr/output/presets/_overlay.py +40 -0
- flowocr/output/presets/default.py +21 -0
- flowocr/output/presets/default_all.py +20 -0
- flowocr/output/presets/dev.py +21 -0
- flowocr/output/presets/matched_srt.py +32 -0
- flowocr/output/presets/script.py +20 -0
- flowocr/output/presets/srt_main.py +33 -0
- flowocr/output/render.py +82 -0
- flowocr/output/run_srt.py +83 -0
- flowocr/output/script.py +541 -0
- flowocr/paths.py +168 -0
- flowocr/provenance.py +119 -0
- flowocr/typeset/__init__.py +9 -0
- flowocr/typeset/__main__.py +38 -0
- flowocr/typeset/assfile.py +216 -0
- flowocr/typeset/core.py +821 -0
- flowocr/typeset/fx/__init__.py +11 -0
- flowocr-0.1.0.dist-info/METADATA +109 -0
- flowocr-0.1.0.dist-info/RECORD +91 -0
- flowocr-0.1.0.dist-info/WHEEL +5 -0
- flowocr-0.1.0.dist-info/entry_points.txt +10 -0
- flowocr-0.1.0.dist-info/licenses/LICENSE +674 -0
- flowocr-0.1.0.dist-info/licenses/LICENSES/Apache-2.0.txt +201 -0
- flowocr-0.1.0.dist-info/licenses/LICENSES/PP-OCRv6-NOTICE.md +18 -0
- flowocr-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""阶段 4 的扩展效果(`flowocr.extensions` 的 `fx` 种类)放这里的是内置的;现在没有,底板、编号、逐字显出在 `core` 里。
|
|
2
|
+
|
|
3
|
+
一个效果模块:
|
|
4
|
+
|
|
5
|
+
* `NAME`:它在字幕稿 Effect 字段 `fo:…` 里的参数名,源行带了这个参数才调它;
|
|
6
|
+
* `elements(line, value) -> list[core.Element]`(可选):第 2 步,读排好版的 `core.Line`(只读),加元素;
|
|
7
|
+
* `tags(line, value, element) -> None`(可选):第 4 步,改每个元素的 tag(`element.tail` / `element.tail2` / `element.body`);
|
|
8
|
+
在动的行按轨迹拆成几段时,每一段的元素定稿之后各调一次。
|
|
9
|
+
|
|
10
|
+
两个挂点至少有一个。元素的位置按条目框左上角排,第 3 步和底板、正文一起按轨迹走。例子见 `examples/fx_minimal.py`。
|
|
11
|
+
"""
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: flowocr
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: 从视频里抽全部屏幕文字、带起止时间、按区域聚类,导出 SRT / ASS
|
|
5
|
+
Author: caca2331
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/caca2331/FlowOCR
|
|
8
|
+
Project-URL: Documentation, https://github.com/caca2331/FlowOCR/blob/main/docs/manual/README.md
|
|
9
|
+
Project-URL: Issues, https://github.com/caca2331/FlowOCR/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/caca2331/FlowOCR/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: ocr,subtitle,video,srt,ass,onnxruntime
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Environment :: GPU :: NVIDIA CUDA
|
|
15
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
16
|
+
Classifier: Natural Language :: Chinese (Simplified)
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Multimedia :: Video
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Image Recognition
|
|
21
|
+
Requires-Python: <3.13,>=3.12
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
License-File: LICENSES/Apache-2.0.txt
|
|
25
|
+
License-File: LICENSES/PP-OCRv6-NOTICE.md
|
|
26
|
+
Requires-Dist: numpy<3,>=2.3
|
|
27
|
+
Requires-Dist: opencv-contrib-python<4.11,>=4.10
|
|
28
|
+
Requires-Dist: pillow>=10
|
|
29
|
+
Requires-Dist: psutil>=6
|
|
30
|
+
Requires-Dist: pyclipper>=1.3
|
|
31
|
+
Requires-Dist: pyyaml>=6
|
|
32
|
+
Requires-Dist: zstandard>=0.22
|
|
33
|
+
Provides-Extra: nvidia
|
|
34
|
+
Requires-Dist: onnxruntime-gpu[cuda,cudnn]==1.29.0; extra == "nvidia"
|
|
35
|
+
Requires-Dist: onnx>=1.17; extra == "nvidia"
|
|
36
|
+
Requires-Dist: nvidia-cuda-runtime==13.0.88; extra == "nvidia"
|
|
37
|
+
Requires-Dist: nvidia-cudnn-cu13==9.13.0.50; extra == "nvidia"
|
|
38
|
+
Requires-Dist: nvidia-cublas==13.0.2.14; extra == "nvidia"
|
|
39
|
+
Requires-Dist: nvidia-cufft==12.0.0.61; extra == "nvidia"
|
|
40
|
+
Requires-Dist: nvidia-curand==10.4.0.35; extra == "nvidia"
|
|
41
|
+
Requires-Dist: nvidia-cuda-nvrtc==13.0.*; extra == "nvidia"
|
|
42
|
+
Requires-Dist: nvidia-nvjitlink==13.0.88; extra == "nvidia"
|
|
43
|
+
Provides-Extra: cpu
|
|
44
|
+
Requires-Dist: onnxruntime==1.29.0; extra == "cpu"
|
|
45
|
+
Requires-Dist: onnx>=1.17; extra == "cpu"
|
|
46
|
+
Provides-Extra: learned
|
|
47
|
+
Requires-Dist: scikit-learn>=1.5; extra == "learned"
|
|
48
|
+
Dynamic: license-file
|
|
49
|
+
|
|
50
|
+
# flowocr
|
|
51
|
+
|
|
52
|
+
把视频里**出现过的所有文字**读出来——不只是底部字幕,还有对话框、名牌、画面上的标注——每条带起止时间(精确到帧),
|
|
53
|
+
并按位置自动分成若干条"文字轨"(对白、字幕、界面、水印……)。产物是 SRT,或叠加在原画面上、每条字留在原位的 ASS 字幕。
|
|
54
|
+
|
|
55
|
+
## 用来做什么
|
|
56
|
+
|
|
57
|
+
- **画面文字翻译**:画面各处的文字都读出来、按位置分好轨;在字幕稿里把原文改成译文,叠加时每条译文留在它原来的位置上。
|
|
58
|
+
- **字幕与原文对齐**:游戏、影视常常能找到原文剧本。把读到的字幕对上原文,拿到准确的文本和时间轴,用来做翻译字幕。
|
|
59
|
+
原神、崩坏:星穹铁道、绝区零有现成的提取工具,按它的说明自己打出文本包(见[相关项目](https://github.com/caca2331/FlowOCR#相关项目))。
|
|
60
|
+
|
|
61
|
+
## 能读什么、在哪跑
|
|
62
|
+
|
|
63
|
+
- **文字**:识别模型是 PaddlePaddle 的 PP-OCRv6(官方称支持约 50 种语言)。实际验证过的是日文(几十小时实况录像和四款游戏的直播录像)与简体中文;
|
|
64
|
+
英文只做过零星试跑;竖排文字没测过。
|
|
65
|
+
- **系统**:Windows 10 / 11。有 NVIDIA 显卡时走显卡;没有也能跑,用 CPU,慢一到两个数量级。
|
|
66
|
+
- 另要 [ffmpeg](https://ffmpeg.org/)(完整构建)。
|
|
67
|
+
|
|
68
|
+
## 快速开始
|
|
69
|
+
|
|
70
|
+
要先装 [uv](https://docs.astral.sh/uv/) 和完整版 [ffmpeg](https://ffmpeg.org/);从源码装、参数和产物说明都在 [使用手册](https://github.com/caca2331/FlowOCR/blob/main/docs/manual/README.md)。
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
uv tool install "flowocr[nvidia]" # 没有 NVIDIA 显卡用 "flowocr[cpu]"
|
|
74
|
+
uv tool update-shell # 第一次用 uv tool 时,然后重开终端
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
有原文剧本时,推荐**开启匹配器,使用默认配置,先做到阶段 3 的字幕稿**;导入 [Aegisub](https://aegisub.org/) 并加载视频,检查文字、时间和位置,改好保存后再跑阶段 4 渲染特效。
|
|
78
|
+
下面以星穹铁道为例,先按 [game-text-data](https://github.com/caca2331/game-text-data) 的说明准备文本包,放进 `gametext\`:
|
|
79
|
+
|
|
80
|
+
```powershell
|
|
81
|
+
flowocr-ocr video.mp4 --out out\v\v.jsonl # 阶段 1:读字
|
|
82
|
+
flowocr-gamescript out\v\v.jsonl --out out\v\v-ref.json --game starrail
|
|
83
|
+
flowocr-tracks out\v\v.jsonl --outdir out\v --tag v --matcher gametext --matcher-ctx game=starrail
|
|
84
|
+
flowocr-match out\v\v-tracks.json --matcher gametext --ctx ref=out\v\v-ref.json --out out\v\v-matched.json
|
|
85
|
+
flowocr-render out\v\v-matched.json --preset script # 阶段 3:只写 v-jp-main.script.ass,默认保留正文与名牌
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
在 Aegisub 中检查并保存 `out\v\v-jp-main.script.ass`,然后用 `default` 预设出特效字幕:
|
|
89
|
+
|
|
90
|
+
```powershell
|
|
91
|
+
flowocr-typeset out\v\v-jp-main.script.ass --preset default # 阶段 4:写 v-jp-main.ass
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
原神 / 绝区零把 `starrail` 换成 `genshin` / `zzz`;没有剧本时省略剧本提取与匹配,用 `flowocr-tracks` 不带匹配参数建轨,再对 `v-tracks.json` 运行阶段 3,字幕稿为 `v-main.script.ass`。
|
|
95
|
+
|
|
96
|
+
## 相关项目
|
|
97
|
+
|
|
98
|
+
- [game-text-data](https://github.com/caca2331/game-text-data):从原神、崩坏:星穹铁道、绝区零的社区解包数据里提取对白文本(中日英对齐),
|
|
99
|
+
打成 flowocr 能直接读的文本包。它只公开提取代码,文本本身不分发——要用的话按它的说明自己打包。
|
|
100
|
+
|
|
101
|
+
## 问题与参与
|
|
102
|
+
|
|
103
|
+
- 用起来有问题、或者在别的显卡 / 机器上跑出了结果,欢迎开 [issue](https://github.com/caca2331/FlowOCR/issues)。
|
|
104
|
+
- Pull request 请以 `main` 为目标。开发环境、代码结构和验证方法见 [开发指南](https://github.com/caca2331/FlowOCR/blob/main/docs/dev-guide/README.md),全部文档见 [文档地图](https://github.com/caca2331/FlowOCR/blob/main/docs/README.md)。
|
|
105
|
+
- 版本变化见 [CHANGELOG](https://github.com/caca2331/FlowOCR/blob/main/CHANGELOG.md)。
|
|
106
|
+
|
|
107
|
+
## 许可
|
|
108
|
+
|
|
109
|
+
GPL-3.0-or-later,全文见 [LICENSE](https://github.com/caca2331/FlowOCR/blob/main/LICENSE)。识别用的 PP-OCRv6 模型由 PaddlePaddle 以 Apache-2.0 发布,来源与我们的改动见 [LICENSES/](https://github.com/caca2331/FlowOCR/blob/main/LICENSES/PP-OCRv6-NOTICE.md)。
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
flowocr/__init__.py,sha256=f48OWGLkK90ugd-brJbVzhRF_amXYX7MKUGvrzJ2MKI,724
|
|
2
|
+
flowocr/extensions.py,sha256=QuKZ_RYJy4ImIxM68wcvDpFavXLZcwJJwUfY5kNxji0,4525
|
|
3
|
+
flowocr/models.py,sha256=6ZBIYDeuCpRnnTjNy2ciRXhwi954xw90W59kYIcXFFU,13220
|
|
4
|
+
flowocr/paths.py,sha256=KEQu9Vu8O_jnVt6EQ75hqm3iOsSd5zw0OEqUIM1sLLk,8207
|
|
5
|
+
flowocr/provenance.py,sha256=p0LOFhDKuXsN_BtINEtcKyVdniNqZUsrFkFAgyDSFio,6409
|
|
6
|
+
flowocr/analyze/__init__.py,sha256=RKRJu7avF0Se-zr9ABTjZKdpt-8U6AkrgGTxXppWQPY,685
|
|
7
|
+
flowocr/analyze/align.py,sha256=L7ftPboNWVy6s70Sr-liALotjRYk-aY4XUufZF8VqDM,7130
|
|
8
|
+
flowocr/analyze/build_tracks.py,sha256=Tw3UrrvBElCcoqwAHsn6WsFesAvJwpND0DaJdvplGk8,175585
|
|
9
|
+
flowocr/analyze/cluster_layers.py,sha256=3ScPZPSry0yVnZj_1fzou7-8yd_hgPbYyqMiCgjNZS0,8355
|
|
10
|
+
flowocr/analyze/game_align.py,sha256=0WnyNjWtu_Kv3vpJ0Bw__zegVy3qWa9t59gqu7TE4hk,38328
|
|
11
|
+
flowocr/analyze/gamescript.py,sha256=vThdRXKANJsW2Rayo7CnzegZwLz-gPLwSvIz-ZmVAHs,70852
|
|
12
|
+
flowocr/analyze/gtdbundle.py,sha256=xJYb5lgXkuBfc6NXnYSeXd18gT899zUnb7zXvjA4yQY,15938
|
|
13
|
+
flowocr/analyze/match.py,sha256=VkGHLjoyxdMkOz7pAJq7QgKo7y4zV_J1Lphqxu2JbFs,3409
|
|
14
|
+
flowocr/analyze/merge_nameplate.py,sha256=zzwAzTE7yLcpvEq3ixjgTbq57x0qmjmQt1H0JetjG7o,10616
|
|
15
|
+
flowocr/analyze/nameplate.py,sha256=rhu-0A3UhEDN2UlebPP01McJt2yzp0hPfeg5R02EYo0,8770
|
|
16
|
+
flowocr/analyze/pair_features.py,sha256=V3iRzTqleGtNyJ3FMzm2c-V8MLhjIBN9LS-RUgwZKl0,9497
|
|
17
|
+
flowocr/analyze/pair_model.py,sha256=edNpENP0dptE0xCYKk0BOOpNDiSUPTAZwCgPq6Ks1qs,6283
|
|
18
|
+
flowocr/analyze/refine_boundaries.py,sha256=QBUDqUOGMEz31cR-ix7nSu8CAwZSoKq2ZywfTWrgBcw,26983
|
|
19
|
+
flowocr/analyze/script_align.py,sha256=MehyccUNK4CBWyWKvgWs1iathIkGTN_Wu5gDFV7VUr4,35752
|
|
20
|
+
flowocr/analyze/scriptmatch.py,sha256=0-ep_44ChqNlloCrH9RF4xsEHOJ6L0-6-zOcIrgfVhc,66663
|
|
21
|
+
flowocr/analyze/slot_learned.py,sha256=jApWHIOFCQ8Jx0F-hOPXBZ9KNKjwqZfdXWZITFpKy68,16956
|
|
22
|
+
flowocr/analyze/slot_lines.py,sha256=CL4v0Dq_P3-qlMx2CZ958UscplBz8wUryl3sLJSmd60,12460
|
|
23
|
+
flowocr/analyze/slot_modes.py,sha256=k4ewdF8CZnhjiprG_dPnvBJSf7XONbo3hhw_dSmq47Q,7278
|
|
24
|
+
flowocr/analyze/slot_pairs.py,sha256=SB8Bj1ZlybOzAZ89wydiZuWNlcwlnICMnU6HhHrljfk,29368
|
|
25
|
+
flowocr/analyze/slot_veto.py,sha256=wwfr2_rx9oKJBVIAqNy2XrnkJqgKl33fN9Y65UeBZ1A,5076
|
|
26
|
+
flowocr/analyze/uigate.py,sha256=BlHMs4KWByCm0HFrVvXVr5Iy-O5qgTmrovpkjZMAZFs,19702
|
|
27
|
+
flowocr/analyze/matchers/__init__.py,sha256=hGA8eY5evGerDpc_ck62sHr0Rm4CeLn-nZDD8cWpBRc,339
|
|
28
|
+
flowocr/analyze/matchers/gametext.py,sha256=jW2IZH_ZVxclodhvdyqWuauUjsdz7tMat5DqjZ_-ArA,4219
|
|
29
|
+
flowocr/analyze/models/slot_pair.json,sha256=N0pmuQLDvsJi_vvzUhmVcdeUXiZagCdN6kWb0hbsRx8,2938
|
|
30
|
+
flowocr/artifacts/__init__.py,sha256=WbhFG7HwdIQNkRF9pKK3Trd3G4P_55QNFSUeEWmxC64,320
|
|
31
|
+
flowocr/artifacts/evalkit.py,sha256=ZWJQPuYeGyeJn1J--CCgTLVV7OTYNNgKFJiWM04BweU,5251
|
|
32
|
+
flowocr/artifacts/matchedio.py,sha256=wdxEgYMSxSXZ3_zh4tkiJmBs2j2zexlj7qqXPDLzhgk,4483
|
|
33
|
+
flowocr/artifacts/srtio.py,sha256=Hb0V5llnjn7v1tCkQ6_pH4AMraqWog70UgWbSfLur-Q,6766
|
|
34
|
+
flowocr/artifacts/tracksio.py,sha256=6HExInREfnqYwrl9yO8D9DJyBp5ElWiss2IIei9YW1A,19571
|
|
35
|
+
flowocr/extract/__init__.py,sha256=QaDUPc42_jEZ0AtPPUL92nrHSpoMYkojqnR90wweJzo,736
|
|
36
|
+
flowocr/extract/childproc.py,sha256=446Vb-9yqsCHOYCmsvvUepddaEx1d-9pzJjcsnFacTI,5071
|
|
37
|
+
flowocr/extract/decode_proc.py,sha256=W149NjXoan9FhmHrOjlhlf33Nro0-z6weJcF2zuWmTE,22498
|
|
38
|
+
flowocr/extract/decode_shards.py,sha256=eb4VCdCgTQtAbnyRNv48ZbMEFjhQc2KOQEeWxyDk8PQ,30803
|
|
39
|
+
flowocr/extract/detpost.py,sha256=kVW47kliUtIdx13TWEFXW0ZtWbuq_IQF_pEoa0KMuJk,11871
|
|
40
|
+
flowocr/extract/edge_proc.py,sha256=yzXMagPGyLW36_3R-FId2WULpA9d1UNAfPJvpFCKovs,15740
|
|
41
|
+
flowocr/extract/edge_refine.py,sha256=uwKb5IxtRaBsqr5GiQxclFBsYA8rKt089b-By1auIWA,37057
|
|
42
|
+
flowocr/extract/fast_det.py,sha256=VlUWr7l1VdW_y0HWuNS5N3FCRU_YASk7WvPMv9HYV-E,11819
|
|
43
|
+
flowocr/extract/ffcheck.py,sha256=Js_1FeVEse3pUmXa61rUhPXpaldH9CSECofxIbtGFLc,4771
|
|
44
|
+
flowocr/extract/framegrid.py,sha256=pa1LFKi0QKXIN8Shemy6wSZ7DeFYADM_A3b49spuJ4k,12930
|
|
45
|
+
flowocr/extract/framesource.py,sha256=lI_ZefIAeMX5GZ7Fwn6ejLEEvUEb_7jBNLndYz1n8i0,73546
|
|
46
|
+
flowocr/extract/ocr_args.py,sha256=LhB0q9up6CbR_epUAbfJ_AXbBfKYMbkUy08XEfzDgPc,70143
|
|
47
|
+
flowocr/extract/ocr_complete.py,sha256=FMqSzRjQ1LBtHpx8WXGNjNzMDNtmBfhQ8fLGYYi06pc,14486
|
|
48
|
+
flowocr/extract/ocr_parallel.py,sha256=TPGSk1l1qdq6le3HGnjhny-JW1wppx2abulqK3D9eJE,12326
|
|
49
|
+
flowocr/extract/ort_server.py,sha256=wyO0mNUiCTSKPKoygJ38WCiW6MyENV26Ux_CrA4jmDY,38945
|
|
50
|
+
flowocr/extract/ortclient.py,sha256=7Suc2VO8zFalkRUT1D2bOrb8ygGxhMpS27FW1MAX5KA,20461
|
|
51
|
+
flowocr/extract/ptsclock.py,sha256=EAA0sE1aP6q54QVJa0zMZHXDej2IQ-_YsDokFYxLiYI,7015
|
|
52
|
+
flowocr/extract/recdecode.py,sha256=CwyQgLLhXTyULQ9dOdiXJzNYSMjWAf3kOa35gJgFv3A,4162
|
|
53
|
+
flowocr/extract/recort.py,sha256=bCWlmrmb7r6Vi62jZLmI1DUH34BBxY2JxIGK0B4WPjk,9515
|
|
54
|
+
flowocr/extract/recpack.py,sha256=tNmYUCGU-txQJs_SvzzyVpT6Flgbcs5itywnoDj-h0E,5155
|
|
55
|
+
flowocr/extract/recpool.py,sha256=umaSGguVDBhlDyzAkiWP-qwIJBageB5FwhsBSyfViRk,12235
|
|
56
|
+
flowocr/extract/recprep.py,sha256=2F6hyFLTGkiEr9iW0ZlRqbJCcIw-tGqQvK87-ZNN6xw,4203
|
|
57
|
+
flowocr/extract/refine_video.py,sha256=7WAG_zblD3nImhruSfhuj1bJRBTEp6qhysWiDFT4wWY,15274
|
|
58
|
+
flowocr/extract/regions.py,sha256=xwPcrJOxGyLtLML5Ygd_ajK2sPxemptp3KbrDZVdft0,19726
|
|
59
|
+
flowocr/extract/reuse_v2.py,sha256=3e8IH6R7mwN2UsxGjQilSunjo9wcmAS53g2iOa6M998,39729
|
|
60
|
+
flowocr/extract/run_groups.py,sha256=DS8qhnfO25CGrYpkFeQWszRmFMtCKGb_AsDQUZes84E,14263
|
|
61
|
+
flowocr/extract/run_ocr2.py,sha256=4qhDn-S6fZLLF6k1vhV3u3-0IQYcVZ68X6x4hrw-kZ8,99403
|
|
62
|
+
flowocr/extract/supervisor.py,sha256=ysWssXJ6qiUnr6N74GY1_iJUqtv3wNro5e9XoXlECP8,14722
|
|
63
|
+
flowocr/extract/timeline.py,sha256=wu3aKP4asz6mEmLjMUNOTcpB7MTTMesAqDVUYIEvWyc,3559
|
|
64
|
+
flowocr/extract/typewriter_fuse.py,sha256=BLvffQFT2hEDoKky-tpUyxjQyvXl3GMUCFBF-7G6CIU,21447
|
|
65
|
+
flowocr/output/__init__.py,sha256=z_o5eIKOKcmsHLcCACjdhko1tu_ZMaeKs8S6nJ_xTNc,260
|
|
66
|
+
flowocr/output/export.py,sha256=jSU2nr78SqecuU8ibm9XdI2c3tWqs9hqjm3u62bCVIQ,11410
|
|
67
|
+
flowocr/output/layout.py,sha256=-ZygdiZuhI3H5i1t7P6A0WO8sILy-Z45sbOkmFxDxZ8,11565
|
|
68
|
+
flowocr/output/render.py,sha256=VEZSVmNKjKgC4qOhTJ7JZca-OC7fmER-Jqf5qGSNb-w,4249
|
|
69
|
+
flowocr/output/run_srt.py,sha256=MsyvobmSa3Lx1lWcWVc1ivMUnAKkt5TjADNS0La3Gok,5422
|
|
70
|
+
flowocr/output/script.py,sha256=PjyYKRh3DlKD0sssR3n3EBXuPXdj8MI2GBDKei8t4r8,32831
|
|
71
|
+
flowocr/output/presets/__init__.py,sha256=OpUnVz9lC7Bqo0RuLHX8xeKuN-oq7K9ok1K79Top0VI,554
|
|
72
|
+
flowocr/output/presets/_overlay.py,sha256=STfWp-VDxhYcVlk7WleKQAKw_vEqeXjp1YWDcoAszvk,2464
|
|
73
|
+
flowocr/output/presets/default.py,sha256=fVgLXif1EUKkwx5DPHRp4Ti1nFpOEJt2U9_L9DQlqSU,1131
|
|
74
|
+
flowocr/output/presets/default_all.py,sha256=XsJt1QmIrc9Phsphx8kAV00Vj5cTo1lpnshP4Ey54sQ,1059
|
|
75
|
+
flowocr/output/presets/dev.py,sha256=929xEFWf-ksoR_1iGAwAaQNHGzhYNXoNy1LgkthSzT4,1258
|
|
76
|
+
flowocr/output/presets/matched_srt.py,sha256=YBRuT53yT3LVIOJkBQUiEN5I8W-TGKN6MGTcE7Mq5Rk,1518
|
|
77
|
+
flowocr/output/presets/script.py,sha256=L3lEebYV_m1IxreKuhvlC9apxsNQ413VMGlr86eUWC8,887
|
|
78
|
+
flowocr/output/presets/srt_main.py,sha256=LsSSgPdNvm6MuW3R0_o29R6wEVD-j7_rxe6JJHwnsRo,1496
|
|
79
|
+
flowocr/typeset/__init__.py,sha256=j9-IU-MlM-iZRMcLcRmx_vbIMha5dybww6FYfmRZxl0,706
|
|
80
|
+
flowocr/typeset/__main__.py,sha256=sF72uIKK0IHpP9yVjIM9cfJfRK4qktErvrky8MbXg1E,2002
|
|
81
|
+
flowocr/typeset/assfile.py,sha256=A6d7Kf4XyIUpeoBligqyq6AF3SlAxW2flEGuzBDkRMA,7747
|
|
82
|
+
flowocr/typeset/core.py,sha256=tUILsAmpUSkanHK4wdqU0eVXzb3e2VPs-EIODUH6X_g,43118
|
|
83
|
+
flowocr/typeset/fx/__init__.py,sha256=tijDwWseNnsChI-lJpOO07HUqBLzIvhgM-RWY7H_vV0,813
|
|
84
|
+
flowocr-0.1.0.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
85
|
+
flowocr-0.1.0.dist-info/licenses/LICENSES/Apache-2.0.txt,sha256=OEDFwMYcKUJk0t13uHd75t3ZASHvTg5kq80i7epYHW4,11376
|
|
86
|
+
flowocr-0.1.0.dist-info/licenses/LICENSES/PP-OCRv6-NOTICE.md,sha256=OuR6CjbgXkEQT_WXnN4Q760xTBDa-LP104Tg3AC8wJ8,1421
|
|
87
|
+
flowocr-0.1.0.dist-info/METADATA,sha256=0mdu5Xvx_yjvvQgIMuujW7lSC0RqEPpEBni8vJQreHU,6570
|
|
88
|
+
flowocr-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
89
|
+
flowocr-0.1.0.dist-info/entry_points.txt,sha256=6zYakPBGYRVLvxCau1ZXkQBJbtermYXfIxFHHLN3OGk,419
|
|
90
|
+
flowocr-0.1.0.dist-info/top_level.txt,sha256=0gpG_kfItuR_W6q9upEGO6spFGn5sDmX9E_1ESUCjfA,8
|
|
91
|
+
flowocr-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
flowocr-export = flowocr.output.export:main
|
|
3
|
+
flowocr-gamescript = flowocr.analyze.gamescript:main
|
|
4
|
+
flowocr-match = flowocr.analyze.match:main
|
|
5
|
+
flowocr-models = flowocr.models:main
|
|
6
|
+
flowocr-ocr = flowocr.extract.supervisor:main
|
|
7
|
+
flowocr-paths = flowocr.paths:main
|
|
8
|
+
flowocr-render = flowocr.output.render:main
|
|
9
|
+
flowocr-tracks = flowocr.analyze.build_tracks:main
|
|
10
|
+
flowocr-typeset = flowocr.typeset.__main__:main
|