Pipeline modular de tradução de mangás que detecta automaticamente balões de fala, extrai o texto em japonês, traduz e insere o resultado de volta na imagem.
Este projeto foi desenvolvido como Trabalho de Conclusão de Curso (TCC) do curso de Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) do Instituto Federal do Rio Grande do Sul (IFRS). O texto completo do trabalho estará disponível aqui após a defesa.
- Demo
- Funcionalidades
- Início Rápido
- Instalação
- Referência da CLI
- Exemplos
- Arquivos de Saída
- Etapas do Pipeline
- Formato do
bubbles.json - Datasets
- Aviso Legal (Disclaimer)
demo.mp4
Manga usado na Demo: Hamlet©Taro Minamoto via Manga109-s Dataset
- Detecção de Balões — Detecção via YOLO com modelo fine-tuned no dataset Manga109-s
- Extração de Texto — MangaOCR para reconhecimento preciso de japonês
- Tradução — Modelos Ollama (
translategemma:4b/translategemma:12b) - Diagramação — Renderiza o texto traduzido de volta nos balões
- Pipeline Modular — Execute todas as etapas ou apenas as que precisar
- Controle CPU/GPU — Configuração granular por etapa
- Monitoramento de Recursos — Perfilamento opcional de CPU/RAM salvo em CSV
python -m ftm --image ./pagina_manga.jpgExecuta o pipeline completo (detecção → extração → tradução → diagramação) e salva a imagem traduzida no diretório informado.
Requisitos: Python 3.9+, Ollama rodando localmente e, opcionalmente, uma GPU compatível com CUDA.
Instalação padrão:
uv tool install "git+ssh://git@github.com/Chipskein/ftm.git" --python 3.11Instalação padrão:
pipx install "git+ssh://git@github.com/Chipskein/ftm.git" --python /usr/bin/python3.11 --verboseCom suporte a GPU NVIDIA (nvidia-ml-py):
pipx install "ftm[nvidia] @ git+ssh://git@github.com/Chipskein/ftm.git" --python /usr/bin/python3.11 --verboseInstalação padrão:
pip install git+https://github.com/Chipskein/ftm.gitCom suporte a GPU NVIDIA (nvidia-ml-py):
pip install "ftm[nvidia] @ git+https://github.com/Chipskein/ftm.git"Versão específica ou branch:
# branch específica
pip install git+https://github.com/Chipskein/ftm.git@main
# tag/versão específica
pip install git+https://github.com/Chipskein/ftm.git@v0.0.1git clone https://github.com/Chipskein/ftm.git
cd ftm
# instalação padrão
pip install .
# com suporte NVIDIA
pip install ".[nvidia]"Após instalar, baixe o modelo de tradução via Ollama:
ollama pull translategemma:4b
ollama pull translategemma:12bpython -m ftm --image <caminho> [opções]
| Argumento | Descrição |
|---|---|
--image CAMINHO |
Caminho para a imagem de entrada |
| Argumento | Padrão | Descrição |
|---|---|---|
--output CAMINHO |
tmp/<nome>_translated.jpg |
Caminho para a imagem traduzida de saída |
--tmp DIR |
./tmp |
Diretório para arquivos temporários e resultados intermediários |
--debug |
False |
Ativa logs detalhados e salva todos os recortes e imagens de debug |
--steps |
todos | Etapas a executar: detection extraction translation typesetting |
--bubbles-json CAMINHO |
None |
Carrega dados de balões de um JSON, pulando a detecção |
--translate-lang |
en |
Idioma de destino: en ou pt |
--translate-model |
translategemma:4b |
Modelo Ollama: translategemma:4b ou translategemma:12b |
--ollama-host URL |
http://localhost:11434 |
Host personalizado da API do Ollama |
--ollama-model-temperature |
0.0 |
Temperatura do modelo (0.0 = determinístico) |
--use-cpu-all |
False |
Força o uso de CPU em todas as etapas |
--use-cpu-step |
[] |
Força CPU em etapas específicas: detection extraction |
--use-monitor |
False |
Salva uso de CPU/RAM em CSV no diretório tmp (requer psutil) |
--huggingface_online_check |
False |
Verifica disponibilidade dos modelos do Hugging Face na inicialização |
Nota: As imagens utilizadas nos testes e exemplos visuais deste projeto são provenientes do dataset Manga109-s, licenciado para uso acadêmico. Por restrições de direitos autorais, essas imagens não estão disponíveis neste repositório — os resultados completos do pipeline podem ser consultados no texto acadêmico do TCC.
Traduzir para português:
python -m ftm --image pagina.jpg --translate-lang ptRodar apenas tradução e diagramação (usando JSON salvo anteriormente):
python -m ftm --image pagina.jpg --bubbles-json ./tmp/pagina_bubbles.json --steps translation typesettingRodar somente na CPU (sem GPU):
python -m ftm --image pagina.jpg --use-cpu-allModo debug com monitoramento de recursos:
python -m ftm --image pagina.jpg --debug --use-monitorHost Ollama personalizado (ex: servidor remoto):
python -m ftm --image pagina.jpg --ollama-host http://192.168.1.100:11434Após uma execução bem-sucedida, os seguintes arquivos são salvos no diretório --tmp:
| Arquivo | Descrição |
|---|---|
<nome>_translated.jpg |
Imagem final traduzida |
<nome>_bubbles.json |
Metadados dos balões: coordenadas, texto OCR, traduções e tempos |
resources_<nome>_yolo.csv |
Log de uso de recursos (se --use-monitor estiver ativo) |
Imagem de Entrada
│
▼
┌─────────────┐
│ Detecção │ YOLO detecta regiões de balões → recortes salvos em tmp/
└──────┬──────┘
│
▼
┌─────────────┐
│ Extração │ MangaOCR lê o texto japonês de cada recorte
└──────┬──────┘
│
▼
┌─────────────┐
│ Tradução │ LLM Ollama traduz JP → idioma de destino
└──────┬──────┘
│
▼
┌─────────────┐
│ Diagramação │ Texto traduzido renderizado de volta na imagem original
└─────────────┘
│
▼
Imagem de Saída + bubbles.json
Cada etapa pode ser executada de forma independente usando --steps e --bubbles-json.
O arquivo JSON intermediário armazena os dados de cada balão detectado:
[
{
"id": 0,
"x": 120,
"y": 340,
"w": 200,
"h": 150,
"crop": "./tmp/pagina_crop_0.jpg",
"jp_text": "こんにちは!",
"translated_text": "Olá!",
"area": 30000,
"detection_method": "yolo",
"detection_rects_total": 8,
"detection_rects_kept": 5,
"detection_time_s": 0.21,
"grouping_time_s": 0.03,
"extraction_symbols": 6,
"extraction_time_s": 0.42,
"translation_symbols": 6,
"translating_time_s": 1.13,
"typesetting_characters": 4,
"typesetting_time_s": 0.08
}
]O modelo de detecção de balões foi ajustado com o dataset Manga109-s, uma versão do Manga109 licenciada para uso acadêmico e de pesquisa.
@inproceedings{fujimoto2018manga109,
title = {Manga109 dataset and creation of metadata},
author = {Fujimoto, Azuma and Ogawa, Toru and Yamamoto, Kazuyoshi and Matsui, Yusuke and Yamasaki, Toshihiko and Aizawa, Kiyoharu},
booktitle = {Proceedings of the 1st Workshop on coMics ANalysis, Processing and Understanding (MANPU), ICPR},
year = {2018}
}@inproceedings{baek2022COO,
title = {COO: Comic Onomatopoeia Dataset for Recognizing Arbitrary or Truncated Texts},
author = {Baek, Jeonghun and Matsui, Yusuke and Aizawa, Kiyoharu},
booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)},
year = {2022}
}@inproceedings{li2024manga109dialog,
title = {Manga109Dialog: A Large-scale Dialogue Dataset for Comics Speaker Detection},
author = {Li, Yingxuan and Aizawa, Kiyoharu and Matsui, Yusuke},
booktitle = {Proceedings of the IEEE International Conference on Multimedia and Expo},
year = {2024}
}LEIA COM ATENÇÃO ANTES DE UTILIZAR ESTA FERRAMENTA.
O FTM — Ferramenta de Tradução de Mangás foi desenvolvido exclusivamente para fins educacionais, de pesquisa, estudo de processamento de linguagem natural e uso pessoal não comercial. Qualquer uso fora desse escopo é de responsabilidade exclusiva do usuário.
É expressamente proibido utilizar este software para produzir, reproduzir, distribuir, publicar ou comercializar traduções não autorizadas de obras protegidas por direitos autorais (scanlations).
A reprodução e distribuição de obras sem autorização expressa dos detentores dos direitos autorais pode configurar violação às seguintes legislações, a depender do país do usuário:
- Brasil: Lei nº 9.610/1998 (Lei de Direitos Autorais)
- União Europeia: Diretiva 2019/790 sobre Direitos Autorais no Mercado Único Digital
- Estados Unidos: Digital Millennium Copyright Act (DMCA) e 17 U.S.C. § 501
- Japão: Lei de Direitos Autorais (著作権法, Lei nº 48 de 1970)
- Demais legislações nacionais e tratados internacionais aplicáveis (Convenção de Berna, TRIPS)
OS DESENVOLVEDORES, CONTRIBUIDORES E MANTENEDORES DESTE PROJETO:
- Não se responsabilizam, em nenhuma hipótese, por qualquer uso ilegal, indevido ou prejudicial do software;
- Não endossam, incentivam ou apoiam qualquer uso desta ferramenta que viole direitos autorais ou qualquer outra legislação aplicável;
- Não fornecem garantias de qualquer natureza sobre o software, expresso ou implícito, incluindo, sem limitação, garantias de adequação a uma finalidade específica;
- Não são responsáveis por quaisquer danos diretos, indiretos, incidentais, especiais ou consequenciais decorrentes do uso ou incapacidade de uso do software.
O uso desta ferramenta é de inteira e exclusiva responsabilidade do usuário. Ao utilizar o FTM, o usuário declara e garante que:
- Está ciente das leis de direitos autorais vigentes em seu país;
- Utilizará a ferramenta apenas para fins legais e autorizados;
- Possui os direitos necessários sobre o material que processará com o software;
- Isenta os desenvolvedores de qualquer responsabilidade civil ou criminal decorrente do uso indevido.
Se você aprecia um mangá, apoie os autores e editoras adquirindo as obras oficiais ou acessando plataformas de leitura legais disponíveis em seu país.
Ao fazer download, clonar, instalar ou utilizar este software, você declara ter lido, compreendido e concordado integralmente com este Aviso Legal.