
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.