flowocr 0.1.0__tar.gz → 0.2.0__tar.gz
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-0.2.0/LICENSES/PP-OCRv6-NOTICE.md +28 -0
- flowocr-0.2.0/LICENSES/TensorRT-NOTICE.md +11 -0
- {flowocr-0.1.0/src/flowocr.egg-info → flowocr-0.2.0}/PKG-INFO +4 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/README.md +2 -2
- {flowocr-0.1.0 → flowocr-0.2.0}/pyproject.toml +4 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/build_tracks.py +413 -77
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/cluster_layers.py +2 -2
- flowocr-0.2.0/src/flowocr/analyze/echo.py +172 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/game_align.py +194 -18
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/gamescript.py +249 -62
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/match.py +8 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/matchers/__init__.py +2 -1
- flowocr-0.2.0/src/flowocr/analyze/matchers/gametext.py +299 -0
- flowocr-0.2.0/src/flowocr/analyze/matchers/naninovel.py +568 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/pair_model.py +1 -2
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/refine_boundaries.py +8 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/script_align.py +96 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/scriptmatch.py +737 -167
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/slot_learned.py +26 -10
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/slot_lines.py +7 -20
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/slot_pairs.py +116 -58
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/uigate.py +7 -1
- flowocr-0.2.0/src/flowocr/artifacts/matchedio.py +266 -0
- flowocr-0.2.0/src/flowocr/artifacts/obsio.py +31 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/artifacts/tracksio.py +138 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extensions.py +26 -2
- flowocr-0.2.0/src/flowocr/extract/aux_transport.py +332 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/childproc.py +14 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/decode_proc.py +64 -84
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/decode_shards.py +134 -67
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/edge_proc.py +31 -6
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/edge_refine.py +30 -7
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ffcheck.py +24 -5
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/framesource.py +149 -58
- flowocr-0.2.0/src/flowocr/extract/langprobe.py +158 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ocr_args.py +167 -46
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ocr_complete.py +1 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ocr_parallel.py +21 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ort_server.py +377 -225
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ortclient.py +86 -18
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/recort.py +17 -2
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/recpack.py +24 -27
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/recpool.py +84 -18
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/regions.py +9 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/reuse_v2.py +242 -106
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/run_groups.py +12 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/run_ocr2.py +799 -575
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/supervisor.py +105 -7
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/timeline.py +6 -3
- flowocr-0.2.0/src/flowocr/extract/trt_check.npz +0 -0
- flowocr-0.2.0/src/flowocr/extract/trt_engine.py +368 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/typewriter_fuse.py +145 -24
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/models.py +149 -22
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/export.py +42 -22
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/layout.py +31 -10
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/presets/__init__.py +1 -1
- flowocr-0.2.0/src/flowocr/output/presets/_overlay.py +49 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/presets/default.py +3 -2
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/presets/default_all.py +2 -1
- flowocr-0.2.0/src/flowocr/output/presets/default_srt.py +56 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/presets/dev.py +2 -1
- flowocr-0.2.0/src/flowocr/output/presets/matched_srt.py +69 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/presets/script.py +2 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/render.py +34 -9
- flowocr-0.2.0/src/flowocr/output/script.py +955 -0
- flowocr-0.2.0/src/flowocr/output/timing_check.py +511 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/paths.py +9 -0
- flowocr-0.2.0/src/flowocr/placeholders.py +163 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/provenance.py +1 -1
- flowocr-0.2.0/src/flowocr/richtext.py +264 -0
- flowocr-0.2.0/src/flowocr/textfold.py +46 -0
- flowocr-0.2.0/src/flowocr/trt.py +435 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/typeset/__main__.py +4 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/typeset/assfile.py +31 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/typeset/core.py +370 -52
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/typeset/fx/__init__.py +2 -0
- flowocr-0.2.0/src/flowocr/typeset/grow.py +186 -0
- flowocr-0.2.0/src/flowocr/typeset/platecolor.py +572 -0
- flowocr-0.2.0/src/flowocr/typeset/ruby.py +166 -0
- {flowocr-0.1.0 → flowocr-0.2.0/src/flowocr.egg-info}/PKG-INFO +4 -3
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr.egg-info/SOURCES.txt +18 -1
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr.egg-info/entry_points.txt +1 -0
- flowocr-0.2.0/tests/test_ort_initializer_lifetime.py +143 -0
- flowocr-0.1.0/LICENSES/PP-OCRv6-NOTICE.md +0 -18
- flowocr-0.1.0/src/flowocr/analyze/matchers/gametext.py +0 -70
- flowocr-0.1.0/src/flowocr/artifacts/matchedio.py +0 -75
- flowocr-0.1.0/src/flowocr/output/presets/_overlay.py +0 -40
- flowocr-0.1.0/src/flowocr/output/presets/matched_srt.py +0 -32
- flowocr-0.1.0/src/flowocr/output/presets/srt_main.py +0 -33
- flowocr-0.1.0/src/flowocr/output/script.py +0 -541
- {flowocr-0.1.0 → flowocr-0.2.0}/LICENSE +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/LICENSES/Apache-2.0.txt +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/setup.cfg +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/align.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/gtdbundle.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/merge_nameplate.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/models/slot_pair.json +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/nameplate.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/pair_features.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/slot_modes.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/analyze/slot_veto.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/artifacts/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/artifacts/evalkit.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/artifacts/srtio.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/detpost.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/fast_det.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/framegrid.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/ptsclock.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/recdecode.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/recprep.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/extract/refine_video.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/output/run_srt.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr/typeset/__init__.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr.egg-info/dependency_links.txt +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr.egg-info/requires.txt +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/src/flowocr.egg-info/top_level.txt +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/tests/test_guards.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/tests/test_inproc_probe.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/tests/test_probe_aux_reuse.py +0 -0
- {flowocr-0.1.0 → flowocr-0.2.0}/tests/test_probe_fps_gap.py +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# PP-OCRv6 模型的来源与许可
|
|
2
|
+
|
|
3
|
+
flowocr 默认的 ONNX Runtime 推理路径使用 PaddlePaddle 官方发布的 PP-OCRv6 模型,由 `flowocr.models` 从 Hugging Face 按固定提交号下载:
|
|
4
|
+
|
|
5
|
+
| 用途 | 仓库 | 提交 | 许可 |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| 文字识别(rec) | [PaddlePaddle/PP-OCRv6_medium_rec_onnx](https://huggingface.co/PaddlePaddle/PP-OCRv6_medium_rec_onnx) | `50c7eacafc52fa7bcf4194e8cd08e46f8558504b` | Apache License 2.0 |
|
|
8
|
+
| 文字检测(det) | [PaddlePaddle/PP-OCRv6_medium_det_onnx](https://huggingface.co/PaddlePaddle/PP-OCRv6_medium_det_onnx) | `61323801669c338b7891481ec7bac61ce31b576a` | Apache License 2.0 |
|
|
9
|
+
|
|
10
|
+
按语言另下的识别模型(`--ocr-lang ko / ru / th / auto` 用到时才下载,同样按固定提交号):
|
|
11
|
+
|
|
12
|
+
| 用途 | 仓库 | 提交 | 许可 |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| 韩文识别 | [PaddlePaddle/korean_PP-OCRv5_mobile_rec_onnx](https://huggingface.co/PaddlePaddle/korean_PP-OCRv5_mobile_rec_onnx) | `5c6f574b8e2230adf4287b33e736d71b9fabd28e` | Apache License 2.0 |
|
|
15
|
+
| 俄文(东斯拉夫语)识别 | [PaddlePaddle/eslav_PP-OCRv5_mobile_rec_onnx](https://huggingface.co/PaddlePaddle/eslav_PP-OCRv5_mobile_rec_onnx) | `9a32171fc5718746875e1a261818884517975013` | Apache License 2.0 |
|
|
16
|
+
| 泰文识别 | [PaddlePaddle/th_PP-OCRv5_mobile_rec_onnx](https://huggingface.co/PaddlePaddle/th_PP-OCRv5_mobile_rec_onnx) | `1d4adbbafb1034a2fd6618498575b81ea7b69f69` | Apache License 2.0 |
|
|
17
|
+
|
|
18
|
+
模型版权归 PaddlePaddle Authors([PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR))。
|
|
19
|
+
上游模型仓库未附 NOTICE 文件,也未附许可证全文;Apache License 2.0 全文在同目录的 `Apache-2.0.txt`
|
|
20
|
+
(取自 paddleocr 3.7.0 发行包的 `LICENSE`,含 PaddlePaddle Authors 的版权声明),亦见 <https://www.apache.org/licenses/LICENSE-2.0>。
|
|
21
|
+
|
|
22
|
+
## 我们做的修改
|
|
23
|
+
|
|
24
|
+
每个识别模型的 `inference_argmax2.onnx` 由同目录上游的 `inference.onnx` 派生(默认的 `PP-OCRv6_medium_rec_onnx` 和上面三个语言模型同样处理):在计算图末尾追加取最大值和最大值下标的节点(默认模型沿类别维分段求、再在段间求,用 `Reshape`、`ReduceMax`、`ArgMax`、`GatherElements` 等;上面三个语言模型的图版本较老,直接用一个 `ArgMax` 和一个 `ReduceMax`),
|
|
25
|
+
并把图的输出从 softmax 的结果改为这两样(`cls`、`prob`)。**权重与原有节点未作任何改动。**
|
|
26
|
+
实现见 `src/flowocr/models.py` 的 `fuse_argmax`。
|
|
27
|
+
|
|
28
|
+
GPU 上用 CUDA 执行 det 时默认用半精度(`--det-precision fp16`;选 `fp32`、在 CPU 上跑或走 TensorRT 时用上游原图),为此在同目录生成 `inference_fp16v1.onnx`:用 ONNX Runtime 自带的转换器(`onnxruntime.transformers.float16`)把权重和中间计算转成半精度,输入和输出保持单精度(图的首尾各加一个 `Cast` 节点);网络结构不变。实现见 `src/flowocr/models.py` 的 `fp16_derive`。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# NVIDIA TensorRT(可选后端)
|
|
2
|
+
|
|
3
|
+
flowocr 可以用 NVIDIA TensorRT 在 GPU 上执行检测和识别(使用手册的 TensorRT 一节)。TensorRT 是 NVIDIA 的专有软件,按 NVIDIA 软件许可协议(NVIDIA Software License Agreement)提供:
|
|
4
|
+
|
|
5
|
+
- **flowocr 不分发 TensorRT**:发行包和源码仓库里都没有它的任何文件,`pyproject.toml` 的依赖里也没有。
|
|
6
|
+
- 用户运行 `flowocr-trt install` 时,程序从 NVIDIA 的包索引(`https://pypi.nvidia.com/tensorrt-cu13-libs/`)取 `tensorrt-cu13-libs` 发行包里的几个文件,
|
|
7
|
+
装进用户自己的数据目录。版本和每个文件的 sha256 钉在 `src/flowocr/trt.py`。
|
|
8
|
+
- 取的文件:`nvinfer_10.dll`、`nvinfer_plugin_10.dll`、`nvonnxparser_10.dll`,本机显卡算力对应的一份 `nvinfer_builder_resource_*_10.dll`(用它建引擎失败时补取通用的 `nvinfer_builder_resource_ptx_10.dll`),以及发行包里的许可协议全文 `LICENSE.txt`。
|
|
9
|
+
下载前可在 NVIDIA 官网读 TensorRT 的许可:<https://docs.nvidia.com/deeplearning/tensorrt/latest/reference/sla.html>(官网是最新版本);随所装版本的那份全文装好后在数据目录的 `trt\<版本>\lib\LICENSE.txt`。下载和使用这些文件即表示接受该协议。
|
|
10
|
+
- 这些文件按原样使用、**未作任何修改**;推理通过 onnxruntime-gpu 自带的 TensorRT 执行提供程序加载它们。
|
|
11
|
+
- 引擎缓存(`trt\<版本>\engines\`)是 TensorRT 在用户机器上由 flowocr 使用的 PaddlePaddle 模型(PP-OCRv6,按语言另下的识别模型是 PP-OCRv5;来源与许可见同目录的 `PP-OCRv6-NOTICE.md`)编译出的文件,只在本机使用。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowocr
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: 从视频里抽全部屏幕文字、带起止时间、按区域聚类,导出 SRT / ASS
|
|
5
5
|
Author: caca2331
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -23,6 +23,7 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
License-File: LICENSES/Apache-2.0.txt
|
|
25
25
|
License-File: LICENSES/PP-OCRv6-NOTICE.md
|
|
26
|
+
License-File: LICENSES/TensorRT-NOTICE.md
|
|
26
27
|
Requires-Dist: numpy<3,>=2.3
|
|
27
28
|
Requires-Dist: opencv-contrib-python<4.11,>=4.10
|
|
28
29
|
Requires-Dist: pillow>=10
|
|
@@ -82,7 +83,7 @@ flowocr-ocr video.mp4 --out out\v\v.jsonl # 阶段 1:读字
|
|
|
82
83
|
flowocr-gamescript out\v\v.jsonl --out out\v\v-ref.json --game starrail
|
|
83
84
|
flowocr-tracks out\v\v.jsonl --outdir out\v --tag v --matcher gametext --matcher-ctx game=starrail
|
|
84
85
|
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
|
+
flowocr-render out\v\v-matched.json --preset script # 阶段 3:只写 v-jp-main.script.ass,默认画匹配器声明的默认组(台词、名牌、选项…)
|
|
86
87
|
```
|
|
87
88
|
|
|
88
89
|
在 Aegisub 中检查并保存 `out\v\v-jp-main.script.ass`,然后用 `default` 预设出特效字幕:
|
|
@@ -106,4 +107,4 @@ flowocr-typeset out\v\v-jp-main.script.ass --preset default # 阶段 4:写 v-j
|
|
|
106
107
|
|
|
107
108
|
## 许可
|
|
108
109
|
|
|
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)
|
|
110
|
+
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)。可选的 TensorRT 后端由用户自己从 NVIDIA 下载、按 NVIDIA 的许可协议使用,flowocr 不分发它([说明](https://github.com/caca2331/FlowOCR/blob/main/LICENSES/TensorRT-NOTICE.md))。
|
|
@@ -33,7 +33,7 @@ flowocr-ocr video.mp4 --out out\v\v.jsonl # 阶段 1:读字
|
|
|
33
33
|
flowocr-gamescript out\v\v.jsonl --out out\v\v-ref.json --game starrail
|
|
34
34
|
flowocr-tracks out\v\v.jsonl --outdir out\v --tag v --matcher gametext --matcher-ctx game=starrail
|
|
35
35
|
flowocr-match out\v\v-tracks.json --matcher gametext --ctx ref=out\v\v-ref.json --out out\v\v-matched.json
|
|
36
|
-
flowocr-render out\v\v-matched.json --preset script # 阶段 3:只写 v-jp-main.script.ass
|
|
36
|
+
flowocr-render out\v\v-matched.json --preset script # 阶段 3:只写 v-jp-main.script.ass,默认画匹配器声明的默认组(台词、名牌、选项…)
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
在 Aegisub 中检查并保存 `out\v\v-jp-main.script.ass`,然后用 `default` 预设出特效字幕:
|
|
@@ -57,4 +57,4 @@ flowocr-typeset out\v\v-jp-main.script.ass --preset default # 阶段 4:写 v-j
|
|
|
57
57
|
|
|
58
58
|
## 许可
|
|
59
59
|
|
|
60
|
-
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)
|
|
60
|
+
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)。可选的 TensorRT 后端由用户自己从 NVIDIA 下载、按 NVIDIA 的许可协议使用,flowocr 不分发它([说明](https://github.com/caca2331/FlowOCR/blob/main/LICENSES/TensorRT-NOTICE.md))。
|
|
@@ -13,7 +13,7 @@ build-backend = "setuptools.build_meta"
|
|
|
13
13
|
|
|
14
14
|
[project]
|
|
15
15
|
name = "flowocr"
|
|
16
|
-
version = "0.
|
|
16
|
+
version = "0.2.0"
|
|
17
17
|
description = "从视频里抽全部屏幕文字、带起止时间、按区域聚类,导出 SRT / ASS"
|
|
18
18
|
readme = "README.md"
|
|
19
19
|
requires-python = ">=3.12,<3.13"
|
|
@@ -80,6 +80,7 @@ flowocr-render = "flowocr.output.render:main"
|
|
|
80
80
|
flowocr-typeset = "flowocr.typeset.__main__:main" # 阶段 4:字幕稿 -> 最终叠加 ASS
|
|
81
81
|
flowocr-paths = "flowocr.paths:main"
|
|
82
82
|
flowocr-models = "flowocr.models:main" # 取官方 ONNX 模型(缺了管线也会自己取;离线机器先在联网处取好)
|
|
83
|
+
flowocr-trt = "flowocr.trt:main" # 装 / 查 / 删 TensorRT 后端的库和引擎缓存(可选后端,不进依赖)
|
|
83
84
|
|
|
84
85
|
[dependency-groups]
|
|
85
86
|
# 开发:守卫、评测、探针要的。不进发行包。
|
|
@@ -94,6 +95,8 @@ where = ["src"]
|
|
|
94
95
|
[tool.setuptools.package-data]
|
|
95
96
|
# 实验性聚类 `--cluster learned` 的模型随代码走(slot_learned.MODEL_PATH)
|
|
96
97
|
"flowocr.analyze" = ["models/*.json"]
|
|
98
|
+
# TensorRT 后端启动自检的输入图(trt_engine.CHECK)
|
|
99
|
+
"flowocr.extract" = ["trt_check.npz"]
|
|
97
100
|
|
|
98
101
|
[tool.uv]
|
|
99
102
|
package = true
|