Skip to content

JhonnySalles/BilingualReader

Repository files navigation

BilingualMangaReader

Leitor de mangas e comics offline, bem como ebooks em geral, no qual possui compatibilidade com Tesseract e Google Vision para utilização de OCR, vínculo de dois arquivos em idiomas diferentes com facilidade na troca entre as páginas de ambos e compatibilidade com textos extraido e processado através do programa MangaExtractor

🚧 BilingualReader 🚀 Em construção... 🚧

SobreBibliotecas utilizadasJson processadoEstrutura do arquivo de legendaHistórico de ReleaseFeaturesContribuindoInstalaçãoExemplos

Sobre

Programa foi criado em Kotlin, onde foi utilizado algumas bibliotecas que estarão listadas mais abaixo para carregamento das imagens e leitura de arquivos jsons.

O aplicativo foi projetado para reconhecer arquivos cbr/rar, cbz/zip, cbt/tar e cb7/7z em uma pasta de biblioteca, onde irá listar todas os arquivos encontrados na pasta informada.

Existe a opção de abertura nos mais populares formatos de ebooks da atualidade como epub/epub3, awz/awz3 e mobi.

Também irá salvar algumas preferências e o progresso e tem suporte a furigana e nivel jlpt do kanji em cores.

Possui compatibilidade com o Tesseract e Google Vision para reconhecimento de caracteres em imagens, no qual comparado a versão de computador e em teste realizado é bem limitado, o que apenas faz jus o reconhecimento para kanjis e não palavras inteiras.

Vinculo entre dois arquivos diferentes para realizar a troca de página entre os arquivos de forma fácil com apenas um clique de botão, no qual pode auxiliar na leitura, aprendizado e entendimento de um novo idioma.

Bibliotecas utilizadas

  • Picasso - Uma poderosa biblioteca de download e cache de imagens para Android.
  • Gson - Uma biblioteca para conversão de json em classe.
  • Sudachi - Uma excelente api para reconhecimento de vocabulário dentro de uma frase em japonês, como também sua leitura, forma de dicionário e afins.
  • Room - Uma biblioteca nativa com vários recusos para gerenciar banco de dados SQLite.
  • PageView - Implementado a estrutura de apresentação de imagens em carrocel.
  • Junrar - Biblioteca para leitura e extração de arquivos rar e cbr.
  • Kaku - Leitor OCR para android. "Apenas chamada por dentro aplicativo, necessário estar instalado."
  • Kuromoji - Analizador morfológico japonês.
  • Sudachi - Sudachi é um analisador morfológico japonês.
  • FuriganaTextView - TextView personalizado para Android que renderiza texto em japonês com furigana.
  • Tesseract4Android - Poderosa biblioteca que faz a comunicação com o Tesseract OCR.
  • LogBack - Biblioteca que traz o poderoso logback para o android.
  • TwoWayView - Biblioteca para apresentação de lista, grids e afins com formato horizontal e vertical.
  • Retrofit 2 - Popular biblioteca para HTTPs no Android.

Json processado

Caso tenha alguma dúvida sobre como processar o json favor entrar em contato. Em breve estarei disponibilizando as legendas que já processadas.

Legendas do manga de exemplo.

Estrutura da classe do arquivo de legenda

O aplicativo é também compatível com legendas extraidas e pré processadas com o programa MangaExtractor, onde após exportar para json as legendas com o formato abaixo, é possível carrega-los tanto embutido no arquivo de manga (rar/zip/tar), como também importado um arquivo de json solto localizado em alguma pasta no celular.

List<Class> capitulos      # Lista de classes de capitulos
├── id
├── manga                  # Nome do manga
├── volume              
├── capitulo
├── linguagem              # Atualmente é suportado em linguagem Inglês, Japonês e Português.
├── scan
├── isExtra
├── isRaw
├── isProcessado
├── List<Class> paginas    # Array de classes páginas
│   ├── nome               # Nome da imagem que está sendo processado
│   ├── numero             # Um contador sequencial das imagens que estão no diretório
│   ├── hashPagina
│   ├── isProcessado
│   ├── List<Class> Textos # Array de classe dos textos da página
│   │   ├── sequencia
│   │   ├── posX1          # Coordenadas da fala na imagem
│   |   ├── posY1              
│   |   ├── posX2              
│   |   └── posY2 
|   ├── hashPagina         # Hash md5 da imagem que foi processada, para que possa localizar a legenda desta página
│   └── vocabulario        # Vocabulário da página
│       ├── palavra       
│       ├── portugues      # Significado da palavra em português
│	    |  ├── ingles         # Significado da palavra em inglês
│	    |  ├── leitura        # Leitura em katakana
│       └── revisado       # Flag sinalizadora que o vocabulário foi revisado ou não. 
└── vocabulario            # Vocabulário do capitulo
    ├── palavra            
    ├── portugues          # Significado da palavra em português
|   ├── ingles            # Significado da palavra em inglês
|   └── leitura           # Leitura em katakana
    └── revisado           # Flag sinalizadora que o vocabulário foi revisado ou não.

Estrutura de classe com informações da página que possui a legenda pré processada, podendo ser obtida de uma raw ou traduzida de alguma fã sub. Com ele será possível apresentar a tradução ou significados dos kanjis presente na página.

Histórico de Release

  • 1.0.0
    • Commit inicial com as alterações do projeto base.
    • Implementado a abertura de livros no formato PDF, EPUB, MOBI e FB2.
  • 1.0.1
    • Em progresso.

Features

  • Leitor de Mangas/Comics
  • Abertura de arquivos cbr/rar
  • Abertura de arquivos cbz/zip
  • Abertura de arquivos cbt/tar
  • Abertura de arquivos cb7/7z
  • Leitor de Livros
  • Abertura de arquivos pdf
  • Abertura de arquivos epub/epub3 [ebook]
  • Abertura de arquivos mobi [ebook]
  • Abertura de arquivos fb2 [ebook]
  • Abertura de arquivos djvu [ebook]
  • Arquivo de legendas pré processadas [Mangas/Comics]
  • Localização da legenda em outro idioma [Mangas/Comics]
  • Auto-Scroll quando pressionar avançar [Mangas/Comics]
  • Zoom com o clique longo [Mangas/Comics]
  • Impressão na imagem as coordenadas de legenda para melhor entendimento
  • Dicionarios Japonês
  • Reconhecimento de furigana do texto em japonês
  • Apresentação do nivel jlpt do kanji
  • Significado do kanji
  • Implementação de temas
  • Alternar entre legendas selecionados (devido a diferenças de paginas entre as versões em diferente idioma a localização não ocorria de forma satisfatória)
  • Abertura de um segundo arquivo para leitura de multi idioma (alternar entre as imagens da página com um siples botão) [Mangas/Comics]
  • Permitir a modificação do vinculo entre as páginas dos dois arquivos [Mangas/Comics]
  • Automatizar o vinculo entre as páginas, levando em consideração páginas duplas [Mangas/Comics]
  • Rastreamento de erros e logs
  • Chamada ao aplicativo Kaku para utilização de OCR
  • Reconhecimento de palavras utilizando o Tesseract OCR/Google Vision
  • Dicionarios Japonês
  • Leitura de metadata de Mangas/Comics no formato ComicRack
  • Sugestões de filtros na biblioteca (Autor, Extensão, Série, Volume, editora)
  • Adicionar marcação do capítulo na barra de progresso (capítulos separado por pastas no arquivo)
  • Lista de páginas com separação por capítulos
  • Compartilhar imagem [Mangas/Comics]
  • Animações nos ícones
  • Compartilhamento de marcações entre o dispositivos através do Google Drive
  • Compartilhamento de marcações entre o dispositivos através do Firebase
  • Funcionalidade de texto para fala utilizando a api do Edge da Microsoft
  • Estatisticas de leituras
  • Marcadores de texto na leitura de livro.
  • Popup para vocabulario e kanji em livros em japonês.
  • Exportar vocabularios ao Anki

Contribuindo

  1. Fork (https://github.com/JhonnySalles/BilingualReader/fork)
  2. Crie sua branch de recurso (git checkout -b feature/fooBar)
  3. Faça o commit com suas alterações (git commit -am 'Add some fooBar')
  4. Realize o push de sua branch (git push origin feature/fooBar)
  5. Crie um novo Pull Request

Instalação

Para executar o projeto é necessário ter o android studio instalado junto com uma versão do emulador.

Abra então no android studio a pasta do projeto e aguarde o gradle processar as dependências.

Após a instalação das dependências compile e execute o projeto, no qual será então aberto no emulador.

Exemplos

Algumas imagens do aplicativo

Menu principal Biblioteca Biblioteca

Leitor Capítulos

Leitor

Apresentação do livro Marcações no texto Filtros para marcações

Biblioteca

Bibliotecaa Ordenação Filtro

Sugestões de pesquisa Filtrado Sugestões

MetaData

MetaData ComicRack Informações do arquivo

Vinculo entre arquivos

Vinculo de paginas entre dois arquivos Movimentação das próximas imagens Vinculo em página simples

Vinculo de pagina dupla Pagina dupla

Zoom da pagina Zoom da pagina

Página original

Página vinculada

Página original com zoom

Zoom mantido na troca

Leitura

Leitor

Zoom mantendo pressionado

Funções de touch

Auto Scroll ao clicar na próxima página

Auto Scroll na leitura

Auto Scroll na leitura

Auto Scroll próxima página

Cores e iluminação Compartilhar a imagem Compartilhar a imagem

Legenda

Legendas Legendas Vocabulário

Legenda Legenda Kanji

Kanji Kanji

Popup da legenda

Identificação da legenda pela coordenada no clique longo

Impressão da localização da legenda Impressão da localização da legenda

Impressão da localização da legenda em outro idioma Copia do vocabulário

Recursos

Sincronização de marcações Sincronização de marcações Importação de vocabulário

Temas Temas Temas

Livro

Apresentação do livro Layout da leitura do livro Busca de texto

Livro em japonês Processamento de vocabulário e kanjis Popup de significados

Marcações

Marcações no texto Anotações das marcações

Pesquisa de marcações Filtros para marcações

Estrutura do arquivo recomendada

Estrutura de pastas do arquivo

Recomendo embutir a legenda no arquivo e separar as pastas por capitulo para facilitar a localização da legenda correta quando não for possível o aplicativo encontrar a pagina correspondente.