Escolha um SDK de OCR de código aberto para Android e iOS
Para um SDK de OCR para Android com mecanismo de código aberto e controle sobre os modelos de idioma, comece pelo Tesseract4Android. No iOS, o guia rápido legado do TesseractOCRiOS tem um bloqueio de build nativo na configuração verificada aqui. Use este guia para escolher um caminho de integração, entender os requisitos de modelo e de plataforma e encontrar o guia de implementação correspondente.
Defina o que precisa ser de código aberto
O OCR converte o texto de imagens em strings que o seu app pode exibir ou processar. Antes de escolher um SDK, diferencie o controle sobre o mecanismo de reconhecimento da capacidade de processar imagens no dispositivo. Se o seu requisito é um mecanismo que você possa inspecionar, modificar e compilar, o Tesseract atende a esse requisito. Uma API no dispositivo, por si só, não estabelece esses direitos.
O Google ML Kit e o Apple Vision são alternativas proprietárias, regidas pelos termos do ML Kit do Google e pelos termos de licença do SDK da Apple. Eles não são substitutos de código aberto do Tesseract. O ML Kit processa as imagens de entrada no dispositivo, mas os termos dele também descrevem o envio de métricas de uso e desempenho ao Google; o reconhecimento local não significa que o SDK nunca se comunica pela rede.
Visão geral dos SDKs de OCR de código aberto
| Opção | Mecanismo e licenciamento | Por onde começar |
|---|---|---|
| Tesseract4Android 4.8.0 | Wrapper Apache-2.0 em torno do Tesseract 5.5.0 | Integração em Java no Android com seus próprios dados de idioma incluídos no app |
| TesseractOCRiOS 4.0.0 | Wrapper MIT em torno do Tesseract 3.03-rc1 | Referência de manutenção legada; veja a limitação de build nativo abaixo |
| Google ML Kit | SDK proprietário do Google | Reconhecimento de fotos no Android quando um mecanismo de código aberto é opcional |
| Apple Vision | Framework proprietário da Apple | Reconhecimento de imagens estáticas no iOS quando um mecanismo de código aberto é opcional |
O próprio Tesseract usa Apache-2.0.
A licença do wrapper não cobre tudo o que é distribuído com ele: dependências nativas e modelos de
idioma têm licenças próprias. O modelo em inglês do guia de Android vem do
tessdata 4.0.0, cuja licença de dados é Apache-2.0.
Verifique separadamente a procedência e a licença de qualquer modelo substituto.
Pré-requisitos
Escolha um guia que corresponda à sua entrada e ao seu ambiente de desenvolvimento:
- OCR com câmera no Android usando Tesseract: Java, Android Studio, SDK Platform 36 e JDK 21. O projeto vinculado exige API 23 ou posterior por causa da dependência do CameraX. O mínimo de API 21 do próprio Tesseract4Android não reduz o requisito do app completo; veja a mudança de SDK mínimo do CameraX.
- OCR de fotos no Android com ML Kit: Kotlin, SDK Platform 36, JDK 21 e API 23 ou posterior, seguindo os requisitos de configuração do Google.
- OCR de imagens no iOS com Vision: um Mac com Xcode, familiaridade com Swift e um simulador ou dispositivo iOS. O app vinculado usa a API Vision nativa em Swift, disponível a partir do iOS 18.
Os guias de implementação trazem as configurações completas do projeto e as toolchains testadas. As verificações deles no emulador Android 16 e no simulador iOS 27 não comprovam o comportamento em todos os sistemas operacionais compatíveis nem em todas as câmeras físicas. Escolha documentos representativos nos idiomas de que você precisa antes de avaliar a qualidade do reconhecimento.
Configuração do Tesseract OCR no Android
Siga a configuração do projeto Tesseract para Android
desde o início. Ela fixa juntas as versões do Tesseract4Android 4.8.0, do OpenCV 4.13.0 e do CameraX 1.6.2
e configura o JitPack para a dependência do Tesseract. Mantenha essas versões fixadas durante o
passo a passo antes de tentar atualizações.
A configuração inclui o modelo em inglês do tessdata 4.0.0
em app/src/main/assets/tessdata/eng.traineddata. O gerenciador dela copia o asset para o armazenamento privado do
app antes da inicialização. O Tesseract precisa de um diretório legível no sistema de arquivos que
contenha tessdata; um asset dentro do APK não é esse diretório. Incluir o modelo no app elimina a
necessidade de baixá-lo na primeira execução, ao custo de manter tanto o asset empacotado quanto a
cópia privada dele.
Combine a família do modelo com o modo do mecanismo. A
documentação de dados treinados do Tesseract diferencia
tessdata, tessdata_fast e tessdata_best; os dois últimos exigem o mecanismo LSTM. Uma versão de wrapper
como 4.8.0 não é a versão do mecanismo incluído nem a versão do modelo.
Implementação de OCR em um app Android
A classe OCRManager.java completa
instala o modelo, reconhece um bitmap e libera os recursos nativos. Mantenha a inicialização, o
reconhecimento e a limpeza em um único worker serial em segundo plano. A activity ao redor cuida do
tratamento da permissão de câmera, da rotação dos frames e de uma fila de análise limitada; copiar
apenas o gerenciador não cria um scanner de câmera.
Use as etapas de solução de problemas desse guia para distinguir um modelo ausente ou corrompido de um resultado de reconhecimento em branco. Para um app que você pretende distribuir, siga o procedimento de verificação de tamanho de página de 16 KB do Android para o APK completo e as bibliotecas nativas dele.
Se você precisa de um seletor de arquivos ou de uma única captura de foto e pode usar um SDK proprietário, siga o guia de reconhecimento de fotos com ML Kit em Kotlin. Ele usa o modelo latino incluído no app, exibe resultados vazios e de imagens ilegíveis e trata seleções ou capturas canceladas. A dependência alternativa do Google Play Services baixa o modelo; ela não consegue retornar resultados de reconhecimento antes que esse modelo esteja pronto.
Avalie o SDK legado de Tesseract OCR para iOS
Não adote o antigo guia rápido do CocoaPods como uma configuração moderna e funcional para iOS.
Conforme verificado em 23 de setembro de 2026, o
podspec do TesseractOCRiOS 5.0.1
aponta para uma tag 5.0.1 que não existe nas
tags upstream. O registro no CocoaPods não garante que o
código-fonte dele possa ser obtido.
O arquivo do código-fonte 4.0.0 pode ser baixado. No entanto, vincular a biblioteca libtesseract_all.a sem modificações
para um simulador iOS arm64 com o Xcode 27.0 e o SDK do iOS Simulator 27.0 falha com o diagnóstico
“64-bit mach-o not 8-byte aligned.” Um programa de controle, sem essa biblioteca, é vinculado
normalmente. Isso é um bloqueio de build nativo nessa configuração, portanto não há aqui uma execução
bem-sucedida de OCR no iOS para recomendar com esse pacote. Isso não comprova que todo port do
Tesseract ou toda configuração de dispositivo mais antiga falhe.
O README da tag também identifica o
Tesseract 3.03-rc1 como o mecanismo incluído. Os requisitos de modelo legados dele diferem dos dados
treinados 4.0.0 da receita de Android. Alterar a versão no Podfile ou copiar o modelo do Android não
resolve o problema de build nativo.
Implementação de OCR em um app iOS
Se um mecanismo de código aberto for obrigatório, reserve tempo e recursos para validar e manter uma integração do Tesseract no iOS. Antes de se comprometer com ela, exija um build a partir do código-fonte ou do pacote escolhido, binários compatíveis com dispositivo e simulador e o reconhecimento dos seus modelos de idioma reais. O SwiftyTesseract está arquivado, e o mantenedor dele afirma que o projeto não receberá mais atualizações. Apenas trocar o nome do wrapper não resolve as questões de manutenção nem de compatibilidade.
Se um framework proprietário da Apple atende aos seus requisitos, siga o
guia de OCR de imagens estáticas com SwiftUI.
Ele usa RecognizeTextRequest para ler imagens PNG e JPEG locais selecionadas no app Arquivos, preservar a
orientação da imagem e exibir texto em inglês selecionável. Ele inclui os arquivos do app, as etapas
de entrada no simulador, as mensagens de erro e o tratamento de cancelamento, sem um binário de OCR
de terceiros nem um diretório tessdata. O app mantém a transcrição na memória em vez de salvar um
histórico de digitalizações.
Esse é um fluxo de trabalho para imagens estáticas. Para um scanner de câmera ao vivo, o mesmo guia explica a integração separada com o VisionKit e as verificações em dispositivo físico. Um teste de imagem no simulador não consegue comprovar a recuperação da permissão de câmera, o foco nem a qualidade do reconhecimento em um celular real.
Dicas para otimizar o desempenho do OCR
Comece com texto nítido, na orientação correta e com pixels suficientes para distinguir os caracteres. Recorte o fundo que distrai, deixando uma pequena borda. O Tesseract já binariza as imagens internamente; compare o seu pré-processamento com o original antes de adicionar limiarização ou desfoque. O guia de qualidade de imagem dele explica a correção de inclinação, as bordas e a escolha da segmentação de página para uma linha, um bloco ou uma página.
Antes de escolher um mecanismo, processe o mesmo pequeno conjunto de documentos nas integrações candidatas. Inclua uma imagem com texto conhecido, uma imagem em branco, um JPEG rotacionado com metadados de orientação e um arquivo corrompido ou ausente. Verifique se um texto vazio pode ser diferenciado de uma falha e se um trabalho cancelado ou desatualizado não pode substituir um resultado mais recente. Teste uma instalação nova offline se isso for importante para o seu app, usando imagens já armazenadas localmente. Depois, meça os erros nos campos de que você realmente precisa, como números de fatura, em vez de tratar uma única amostra limpa como benchmark de precisão.
