
OCR pronto para usar com mais de 80 idiomas suportados e todos os sistemas de escrita populares, incluindo latim, chinês, árabe, devanágari, cirílico e etc.
OCR pronto para uso com mais de 80 idiomas suportados e todos os sistemas de escrita populares, incluindo: latim, chinês, árabe, devanágari, cirílico, etc.
Experimente a Demonstração no nosso site
Integrado ao Huggingface Spaces 🤗 usando Gradio. Experimente a Demonstração Web:
24 de setembro de 2024 - Versão 1.7.2



Instale usando pip
Para a versão estável mais recente:
pip install easyocr
Para a versão de desenvolvimento mais recente:
pip install git+https://github.com/JaidedAI/EasyOCR.git
Nota 1: Para Windows, instale primeiro o torch e o torchvision seguindo as instruções oficiais aqui https://pytorch.org. No site do pytorch, certifique-se de selecionar a versão correta do CUDA que você possui. Se você pretende executar apenas no modo CPU, selecione CUDA = None.
Nota 2: Também fornecemos um Dockerfile aqui.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
A saída estará em formato de lista; cada item representa uma caixa delimitadora (bounding box), o texto detectado e o nível de confiança, respectivamente.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Nota 1: ['ch_sim','en'] é a lista de idiomas que você deseja ler. Você pode passar vários idiomas de uma vez, mas nem todos os idiomas podem ser usados juntos. O inglês é compatível com todos os idiomas, e idiomas que compartilham caracteres comuns geralmente são compatíveis entre si.
Nota 2: Em vez do caminho do arquivo chinese.jpg, você também pode passar um objeto de imagem OpenCV (array numpy) ou um arquivo de imagem como bytes. Uma URL para uma imagem bruta também é aceitável.
Nota 3: A linha reader = easyocr.Reader(['ch_sim','en']) serve para carregar um modelo na memória. Leva algum tempo, mas precisa ser executada apenas uma vez.
Você também pode definir detail=0 para uma saída mais simples.
reader.readtext('chinese.jpg', detail = 0)
Resultado:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Os pesos do modelo para o idioma escolhido serão baixados automaticamente ou você pode baixá-los manualmente do model hub e colocá-los na pasta '~/.EasyOCR/model'
Caso você não tenha uma GPU, ou sua GPU tenha pouca memória, você pode executar o modelo apenas em modo CPU adicionando gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Para mais informações, leia o tutorial e a Documentação da API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Para o modelo de reconhecimento, leia aqui.
Para o modelo de detecção (CRAFT), leia aqui.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
A ideia é poder plugar qualquer modelo de última geração no EasyOCR. Há muitos gênios tentando criar melhores modelos de detecção/reconhecimento, mas não estamos tentando ser gênios aqui. Só queremos tornar seus trabalhos rapidamente acessíveis ao público... de graça. (bem, acreditamos que a maioria dos gênios quer que seu trabalho cause um impacto positivo o mais rápido/amplo possível) O pipeline deve ser algo como o diagrama abaixo. Os espaços cinza são placeholders para os módulos azul-claros intercambiáveis.

Este projeto é baseado em pesquisa e código de vários artigos e repositórios de código aberto.
Toda a execução de aprendizado profundo é baseada em Pytorch. ❤️
A execução da detecção usa o algoritmo CRAFT deste repositório oficial e seu artigo (Obrigado @YoungminBaek do @clovaai). Também usamos o modelo pré-treinado deles. O script de treinamento é fornecido por @gmuffiness.
O modelo de reconhecimento é uma CRNN (artigo). Ele é composto por 3 componentes principais: extração de características (atualmente usamos Resnet) e VGG, rotulagem de sequências (LSTM) e decodificação (CTC). O pipeline de treinamento para a execução do reconhecimento é uma versão modificada do framework deep-text-recognition-benchmark. (Obrigado @ku21fan do @clovaai) Este repositório é uma joia que merece mais reconhecimento.
O código de busca em feixe (beam search) é baseado neste repositório e no blog dele. (Obrigado @githubharald)
A síntese de dados é baseada em TextRecognitionDataGenerator. (Obrigado @Belval)
E uma boa leitura sobre CTC do distill.pub aqui.
Vamos avançar a humanidade juntos, tornando a IA disponível para todos!
3 maneiras de contribuir:
Programador: Envie um PR para pequenos bugs/melhorias. Para os maiores, discuta conosco abrindo uma issue primeiro. Existe uma lista de possíveis issues de bugs/melhorias marcadas com 'PR WELCOME'.
Usuário: Conte-nos como o EasyOCR beneficia você/sua organização para incentivar o desenvolvimento contínuo. Também publique casos de falha na Seção de Issues para ajudar a melhorar os modelos futuros.
Líder de tecnologia/Guru: Se você achou esta biblioteca útil, por favor divulgue! (Veja o post de Yann Lecun sobre o EasyOCR)
Para solicitar um novo idioma, precisamos que você envie um PR com os 2 arquivos seguintes:
Se o seu idioma tem elementos únicos (como 1. Árabe: os caracteres mudam de forma quando conectados uns aos outros + escrita da direita para a esquerda 2. Tailandês: alguns caracteres precisam estar acima da linha e outros abaixo), por favor, nos ensine da melhor forma possível e/ou forneça links úteis. É importante cuidar dos detalhes para alcançar um sistema que realmente funcione.
Por fim, entenda que nossa prioridade terá que ser para idiomas populares ou conjuntos de idiomas que compartilham grandes porções de seus caracteres entre si (nos diga também se esse é o caso do seu idioma). Leva pelo menos uma semana para desenvolver um novo modelo, então você pode ter que esperar um pouco até que o novo modelo seja lançado.
Veja Lista de idiomas em desenvolvimento
Devido a recursos limitados, uma issue com mais de 6 meses será fechada automaticamente. Abra uma nova issue novamente se for crítica.
Para Suporte Empresarial, a Jaided AI oferece serviço completo para sistemas personalizados de OCR/IA, desde implementação, treinamento/ajuste fino e implantação. Clique aqui para entrar em contato conosco.