Leitor de mangas offline, 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
⚠ Projeto migrado à BilingualReader 🚸
Sobre • Bibliotecas utilizadas • Json processado • Estrutura do arquivo de legenda • Histórico de Release • Features • Contribuindo • Instalação • Exemplos
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 e cbz/zip em uma pasta de biblioteca, onde irá listar todas os arquivos encontrados na pasta informada.
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 e aprendizado de um novo idioma.
- 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.
Caso tenha alguma dúvida sobre como processar o json favor entrar em contato. Em breve estarei disponibilizando as legendas que já processadas.
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.
- 0.1.0
- Uso em desenvolvimento.
- 0.2.0
- Leitor de manga com suporte a rar/zip/cbr/cbz.
- Recursos principais de um leitor de manga.
- Adicionar favorito.
- Exclusão do arquivo.
- Ajuste de brilho e cor da imagem.
- Reconhecimento de fugirana nos textos em japonês.
- Carregar legendas externas e interna ao arquivo.
- Detalhes sobre o kanji e nivel jlpt.
- Primeira versão estável publicada.
- 0.2.1
- Localização do texto com clique longo no balão de fala.
- Adicionado tela de ajuda com detalhes do funcionamento.
- Adicionado controle de luz azul e sépia.
- 0.2.2
- Ajustes de bugs e erros.
- Novo calculo de posicionamento para a aplicação da legenda
- 0.2.7
- Adicionado método para vincular páginas de dois arquivos diferentes.
- Adicionado método de arrasta e solta para a organização das imagens.
- Adicionado método para vincular páginas duplas quando necessário no arquivo vinculado.
- Implementado a correções de alguns bugs.
- Correção para a leitura aproveitar a tela inteira em android recente.
- Ajuste na busca da legenda e a implementação da busca pela página vinculada.
- 0.2.8
- Implementado métodos para rastrear possiveis erros.
- Ajuste de erros e bug.
- Refatorado alguns icones.
- Implementado a chamada ao App Kaku.
- 0.2.9
- Otimização para o aplicativo utilizar menos memória.
- Otimização no carregamento das capas.
- Implementado a utilização da biblioteca LruCache para as imagens.
- Implementação de novas funcionalidades de ordenação na tela de vinculo de arquivo.
- 0.2.10
- Implementado nova funcionalidade de OCR, utilizando-se da tecnologia do Tesseract e Google Vision.
- Adicionado nova funcionalidade e painel flutuante que irá recortar um pedaço da imagem para ser feito o reconhecimento de caractere no Tesseract.
- Adicionado novo layout na janela flutuante para receber as informações do texto reconhecido, como também irá manter uma lista do que foi capturado em tempo de execução.
- Adicionado para o Tesseract os data de treinamento nos idiomas Protuguês, Inglês e Japonês.
- Implementado a possibilidade de ajustar a janela flutuante.
- 0.2.11
- Otimização na biblioteca, tanto no carregamento dos itens quando na funcionalidade.
- Refeito o layout para melhor aparência.
- Adicionado nova tela com informações adicionais sobre o arquivo, com informações de capítulos e outros arquivos vinculados.
- Adicionado animações nas transições de tela e nos arquivos da biblioteca.
- Implementado um novo painel flutuante com botões essenciais para leitura, não sendo necessário sair da tela cheia para executar algum comando.
- 0.2.14
- Refatorado alguns nomes de icones.
- Ajuste de layout.
- Correção em bug no scrool automático.
- Ajuste de cores do projeto.
- Implementado backup do banco de dados.
- 0.2.15
- Ajuste na ordenação de páginas.
- Criado tela para verificação do vocabulário.
- 0.2.16
- Impelemntado novo tema de detalhe sobre o kanji.
- Adicionado banco de dados do kanji.
- Ajuste de layout.
- Implemetado temas no aplicativo.
- 0.2.17
- Implementado zoom na imagem com o toque longo.
- Ajustes nas cores e layouts.
- Adicionado funcionalidade copiar o vocabulário no toque longo.
- Implementado para desfazer até 10 ultimas alterações na tela de vínculo de arquivos.
- Correção de bug na ordenação das páginas na tela de vinculo de arquivos.
- Implementado para o aplicativo realizar a abertura de qualquer arquivo cbr ou zip diretamente.
- Adicionado atalhos para ultimos arquivos abertos.
- 0.2.18
- Implementado popup na tela de vínculo de arquivos para visualizar a imagem em maior tamanho.
- Otimizado o carregamento das imagens na tela de vinculo de arquivos.
- Implementado função de zoom de pinça no popup de imagem.
- Correção no vocabulário para aceitar a tradução em português e inglês.
- Correção para a troca da página entre os arquivos vinculado esteja mantendo a posição da leitura.
- 0.2.19
- Atualizado as bibliotecas.
- Adicionado animações nos botões.
- Adicionado capitulos na barra de progresso.
- Abertura de arquivos cbr/rar
- Abertura de arquivos cbz/zip
- Abertura de arquivos Tar
- Leitor com o minimo de recursos para visualização do manga
- Listar arquivos na pasta de biblioteca
- Guardar informações sobre progresso
- Carregar legendas pré processadas
- Localização da legenda em outro idioma
- Popup flutuante da legenda para facilitar a leitura
- Impressão na imagem das coordenadas de texto extraido para melhor localizar a legenda
- Reconhecimento de furigana do texto em japonês
- Reconhecimento do nivel jlpt do kanji
- Ajustes no brilho e cores da imagem
- Melhorias e ajuste da interface
- Implementação de lista de histórico
- Utilização de vocabulário
- Significado do kanji
- Favoritar o kanji para estudo posterior
- Interface para modo tablet
- Localizar no vocabulário na ao toque na palavra
- Troca das legendas entre idiomas selecionados (devido a diferenças de paginas entre versões pode não localizar de forma satisfatória)
- Luz azul para leitura norturna
- Localizar a legenda pela cordenada do texto
- Ajuste para a leitura aproveitar a tela inteira do celular
- Adicionado nova tela para vincular as páginas de dois arquivos
- Implementar a abertura de um segundo arquivo para leitura de multi idioma (com a troca de imagens entre o original e outro arquivo em outro idioma)
- Implementar a troca de imagens na leitura para a página vinculada
- Implementar a re-organização de outras páginas ao movimentar uma página em específica
- Adicionar funcionalidade para páginas duplas
- Ajustar a busca das legendas para utilizar da página vinculada
- Implementar a organização dos arquivos vinculados por idioma, sendo possível o vinculo de mais de um arquivo e manter a organização feita
- Implementar rastreamento de erros e logs.
- Adicionado a chamada ao aplicativo Kaku
- Implementar novas funcionalidades de ordenação na tela de vinculo de arquivo.
- Implementar ordenação de páginas simples e dupla.
- Implementar ordenação de páginas automática, utilizando o tamanho da imagem para identificar se é página dupla.
- Implementar exclusão do vinculo do arquivo.
- Ajustar o carregamento das imagens de capa, realizar otimização no aplicativo e menor consumo de memória.
- Implementar o Tesseract OCR ao projeto e realizar identificação de palavras em imagens.
- Ajustar o painel flutuante para receber palavras que foram reconhecidas pelo Tesseract.
- Implementar a api Google Vision para reconhecimento de palavras em imagens.
- Favoritar vocabulário para estudo posterior
- Implementar temas no aplicativo.
- Adição de dicionarios japonês.
- Adição de várias pastas de biblioteca.
- Implementar zoom nas imagens na tela de vinculo de arquivo.
- Implementar novas ordenações na tela de vinculo de arquivo.
- Abertura de arquivos diretamente pelo aplicativo.
- Adicionado atalho para ultimos arquivos lidos.
- Implementar nova funcionalidade para leituras de novel.
- Implementar abertura de arquivos pdf.
- Implementar abertura de arquivos ebook.
- Implementar abertura de páginas da web.
- Exportar vocabularios ao Anki
- Fork (https://github.com/JhonnySalles/BilingualMangaReader/fork)
- Crie sua branch de recurso (
git checkout -b feature/fooBar
) - Faça o commit com suas alterações (
git commit -am 'Add some fooBar'
) - Realize o push de sua branch (
git push origin feature/fooBar
) - Crie um novo Pull Request
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.
Algumas imagens do aplicativo
Recursos
Estrutura do arquivo recomendada
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.