#manga #transcription #statistics #data #format #readable #language

app mangatrans

漫画转录数据格式以及将其渲染为可读格式、统计数据等多种方式

2 个稳定版本

1.0.2 2024年5月23日
1.0.1 2022年11月18日
1.0.0 2022年8月18日

#37图像

GPL-3.0-or-later

48KB
878

Mangatrans

漫画转录数据格式以及将其渲染为可读格式、统计数据等多种方式。

目标

本项目的目标是能够将漫画转录作为数据编写,而不是最终结果。程序应解析此数据并从中构建各种输出形式,例如可读性、语言报告和统计数据。

转录

转录应包含漫画中的原始文本。除了原始文本外,它还可以包含额外的辅助信息,例如替换了假名的文本、罗马字文本和翻译或注释。

这样做的目的是在阅读漫画的同时保留这些信息,或者能够回过头来防止重复工作,例如确定假名的拼写。

语言报告

这是一种额外的学习日语的工具,可以在阅读和转录漫画时使用。可以包含常见的假名及其转换为平假名映射的列表。简单频率统计和排序输出的引入可能揭示了语言使用中的模式,例如最常见的单词和假名,这对于学习很有用。

统计报告

一款新颖的工具。了解哪些地点在漫画中出现的最多,谁说话最多,哪些角色之间对话频繁,以及其他新颖之处,可能对漫画粉丝来说很有趣。根据我的经验,当你逐章转录并翻译时,理解语言和处理假名要比简单地说明地点和出场角色要费力得多。这就是为什么你不妨将这些事情转录下来,因为它们并不会大幅增加工作量,而且可以产生一些非常有趣的见解。

配置

将内容转录成数据格式而不是直接消费的格式有一些优势。配置可能允许根据数据生成不同的输出。原因可能是不同人的偏好或不同的目标。如果你已经做了很多工作,并意识到你想要不同的格式,你不必重新格式化你的工作,只需生成不同的输出即可。这是项目的目标之一,因为在转录的开始阶段,我一直在更改格式。

功能列表

  • 解析数据
    • 图片数据:地点、角色、编号、页面
    • 转录
    • 翻译
    • 假名图
    • 从/到(指向哪个角色的方向)
    • 一个或多个模式
  • 通用
    • 报告:包含的卷和章节,图片和音节计数
    • 使用配置文件自定义
    • 递归地点
  • 转录
    • 原文和翻译
    • 假名替换
    • 自动罗马字化
    • 自动缩进
    • 文本一致性改进
    • 页面标题
  • 统计
    • 排名地点:出现次数,说话的音节
    • 角色按出现次数排名
    • 角色按说话的音节排名
    • 角色按其他角色说话给他们的音节排名
    • 角色对按互动中的音节说话次数排名
    • 角色按整体突出度排名
  • 语言报告
    • 平假名/片假名按计数排名
    • 假名按计数排名
    • 单词按计数排名

数据格式

数据记录在toml文件中。
每个章节都应该有一个单独的toml文件。
每个文件都以有关章节的一些信息开始

# this is a comment and will be ignored by the program
manga = "日常"
author = "あらゐけいいち"
volume = 1
chapter = 1
subchapter = 0.5
title = "日常の1.5"

subchapter字段是可选的,其余字段都是预期的。
之后,你将提供如下的图片数组

[[pic]]
    # picture data
[[pic]]
    # picture data
[[pic]]
    # picture data

图片数据的示例

[[pic]]
nr = 2
page = 1
location = "shinonome house"
characters = ["nano"]
    [[pic.text]]
        # text data
    [[pic.text]]
        # text data
    [[pic.text]]
        # text data

图片编号(nr)是必须存在的。
page是可选的,并设置页码。如果page不存在,则假定我们仍然在上次声明页码的同一页。每个章节必须为其第一张图片分配页码,以便知道如何继续。
locationcharacters和文本数组都是可选的。
每个章节的第一页必须有一个初始地点。文本数据的示例

[[pic.text]]
from = "nano"
to = "hakase"
lines = ["今日", "日直 でしたー"]
kmap = [
    ["今日", "きょう"],
    ["", "につ"],
    ["", "ちょく"],
]
transl = ["Today", "is my shift!"]
notes = ["This in an optional note, the transcriber may want to say something about this text."]
todo = true

from用于描述哪个角色说了当前文本。我个人在这个字段中将叙述者视为“角色”。
to包含这个文本指向的角色。我个人在这个字段中将观众视为“角色”。该字段是可选的。如果一个角色对自己说话或内心思考,你可以简单地省略这个字段。
lines 是一个必填字段,应是一个包含转录文本每行字符串的数组。此文本应逐字从漫画中转录,除空格外,并用于许多计算和转换。要分割单词,可以在字符之间插入ASCII空格 " "。这些在转录输出中将被删除,但将用于如罗马音等。
kmap 是一个可选字段,用于定义汉字到平假名或片假名的映射。这用于替换。
transl 用于 lines 的翻译。它是可选的,你可能有与 lines 数组不同的 transl 数组条目。
notes 是可选的,你可以在其中写下关于此文本的注释。 todo 是可选的,当设置为 true 时,将记录此文本需要工作。如果你有错误、某些内容不完整等,你可能想将 todo = true。这样,它将每次都记录下来,这样你就不必过一段时间就忘记它,你知道哪些项需要一些工作。将 todo = false 设置为 false 不会做任何事情,它与省略 todo 相同。

当一个汉字在文本中出现多次时,你必须给出正确的映射,次数与出现次数相同。这样,才能有相同汉字但有不同映射的句子。一个例子

[[pic.text]]
from = "yukko"
lines = ["そう考 えると", "不幸中 の 幸いって", "ヤツだね"]
kmap = [
    ["", "かんが"],
    ["", ""],
    ["", "こう"],
    ["", "ちゅ"],
    ["", "さいわ"],
]
transl = ["If you think about it that way it's a blessing in disguise."]

一个或多个模式

'一个或多个' 模式已经实现,具有向后兼容性。这意味着在可以接受多个值的数组字段中,你现在也可以省略数组,如果你只有一个值。例如,当表示哪些字符出现在图片中时,你可以写 characters = ["yukko", "mai"]。对于单个字符,你可以写 characters = ["nano"]。使用 '一个或多个' 模式,你可以将前者写为 characters = "nano"。支持此模式的字段有:charactersformtolineskmaptranslnotes

示例

有关示例,请查看 example.toml。有关 toml 语言的更多信息,请访问 https://toml.cn/en/

example.toml 和此说明书中所有示例材料,如示例行和字符,均来自漫画 日常,作者为 あらゐけいいち。这些材料用于教学目的。

用法

程序通过命令行界面 (CLI) 使用。

USAGE:
    mangatrans [OPTIONS] <INPUTFILES>...

ARGS:
    <INPUTFILES>...

OPTIONS:
    -d, --outputdir <OUTPUTDIR>
    -h, --help                       Print help information
    -l, --log <log>                  [default: true]
    -m, --mode <MODE>                [default: transcribe] [possible values: transcribe, stats,
                                     language]
    -o, --outputmode <OUTPUTMODE>    [default: stdout] [possible values: stdout, file]
    -V, --version                    Print version information

示例输出

从漫画 日常的第 1 章生成的示例输出。

转录模式的部分示例输出

  • 图片 65
    • 文本 1
      • なのちゃん
        休みなんて
        めずらしいね
      • なのちゃん
        休息时间吗
        めずらしいね
      • nano 姑娘
        yasuminante
        感觉怎么样?
      • Nano 姑娘不在这里是很罕见的事,对吧?
    • 文本2
      • 是不是故障了?
      • 怎么了?
      • 怎么了?
      • 可能是故障?
    • 文本3
      • 停下来吧
        本人还没发现
        我想你应该不知道
      • 停下来吧
        真的还没有被发现
        你应该还没想到
      • chotto yamenayo-
        honnin baretenaito
        omotterundakara
      • 停下来吧,她还没发现我们知道了。

统计模式输出示例

Manga: 日常
Volumes: 1
Chapters: 1
Pictures: 74
Morae spoken: 880
Locations:
    street: 30 appearances, 339 morae spoken in.
    roof: 19 appearances, 130 morae spoken in.
    classroom: 17 appearances, 311 morae spoken in.
    shinonome house: 3 appearances, 73 morae spoken in.
    chimney: 2 appearances, 7 morae spoken in.
    school hallway: 1 appearances, 12 morae spoken in.
    school grounds: 1 appearances, 8 morae spoken in.
    aioi lookalike family garden: 1 appearances, 0 morae spoken in.
Character appearances:
    yukko: 33
    nano: 24
    mio: 19
    mai: 9
    kokeshi: 6
    person: 5
    akabeko: 5
    headphones guy: 4
    aioi mom lookalike: 2
    nakanojo: 2
    izumi: 1
    crow wug: 1
    hakase: 1
    mono: 1
    chissan lookalike: 1
Morae spoken:
    yukko: 309
    nano: 238
    mio: 143
    narator: 74
    izumi: 65
    headphones guy: 16
    mai: 14
    person: 11
    nakanojo: 9
    hakase: 1
Morae spoken to:
    audience: 74
    yukko: 73
    class: 65
    mio: 55
    hakase: 48
    mai: 42
    person: 17
    nakanojo: 3
Conversation pairs in morae:
    mio, yukko: 114
    audience, narator: 74
    class, izumi: 65
    hakase, nano: 48
    mai, yukko: 40
    mai, mio: 16
    nakanojo, person: 12
    person, person: 8

语言模式部分输出示例

Kanji frequencies::: 5: せい: 4: こう: 4:: 3:: 3
    今日: きょう: 3: あか: 3:: 3: のめ: 2:: 2: せん: 2: くだ: 2: おも: 2: につ: 2: ほん: 2: ちょく: 2: にん: 2: しの: 2:: 2: はら: 2

许可证

Copyright (C) 2024 Cody Bloemhard

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

依赖项

~1.4–2.2MB
~42K SLoC