Você está na página 1de 5

Volume 2018 1

IDENTIFICAÇÃO DE CARÁCTERES ATRAVÉS DE PROCESSAMENTO


DE IMAGEM COM ÊNFASE EM SOLUCIONAR CAPTCHAs

IDENTIFICATION OF CHARACTERS THROUGH IMAGE PROCESSING


WITH THE EMPHASIS IN SOLVING CAPTCHAs

Maciel Santana da Silva1

RESUMO: Tresseract, Caracteres, OpenCV, Limiarização, Histograma, CAPTCHA

Uma apresentadação teórica do princípio do reconhecimento de Caracteres em imagens, e a aplicação da


mesma regra utilizando-se das bibliotecas OpenCV para tratamento de imagens e Tresseract voltada para
reconhecimento de caracteres, com o objetivo de solucionar CAPTCHAs para testes de segurança e
eficácia do mesmo.

Abstract: Keyword

INTRODUÇÃO

O presente artigo tem como finalidade o estudo do reconhecimento de caracteres através do


processamento de imagens para assim resolver CAPTCHAs, mas para isso se fez necessário conhecer o
princípio dos tratamentos realizados nas imagens alvo para chegar em um resultado satisfatório.
Abordamos de forma simples a binarização de imagens, onde é o pontapé inicial da pesquisa, analise de
Histogramas até chegar na codificação utilizando as bibliotecas OCR mais conhecidas em reconhecimento
de caracteres.

Problema bots em reconhecimento de CAPTCHAs se


Um CAPTCHA mais conhecido como “Teste de passando por pessoas, teve um grande aumento,
Turing”, é um teste cognitivo utilizado para exigindo alguma forma ou método de teste para
diferenciar um humano de uma maquina. De avaliação de complexidade de um CAPTCHA.
forma prática são imagens com caracteres
alfanumericos, utilizados em confirmações de
login, formulários ou qualquer verificação de
segurança, prevenindo o abuso de ‘bots’ ou
programas automatizados escritos para gerar
spam. Com as melhorias de algoritmos de
processamento de imagens o desempenho dos

1 macielsilvasantana@hotmail.com. Titulação do autor (instituição).

ISSN: 1234-9876 Indicar a autoria


Volume 2018 2

Qual a aplicação conténham sistemas legados ainda utilizam


como forma de segurança o CAPTCHA.
A aplicabilidade do artigo pode se dar em uma
ferramenta de testes para CAPTCHAs, pois
muitos orgãos Públicos ou privados que

MÉTODOS

No desenvolvimento do artigo, utilizou-se na que não fossem caracteres, que dificultem a


execução dos teste das imagens CAPTCHAs a leitura e identificação dos mesmos.
linguagem de programação Python. A Após a limpeza de elementos que atrapalhasse a
implementação em Python foi possível pelos leitura, a biblioteca Tresseract entra em ação
fatores: simplicidade na sintaxe, ambiente e para realizar a identificação dos caracteres
bibliotecas de rápida instalação. Além da própriamente dito, transformando em uma String
linguagem, as bibliotecas responsáveis pela exibindo no console,
“mágica” são elas: OpenCV e Tesseract.
O OpenCV ficou responsável por eliminar
qualquer ruído da imagem, ou seja, elementos

DESENVOLVIMENTO

Limiarização (Binarização) O “1” e “0” são representativos ao nível de cinza


da imagem binarizada. Ao realizar a binarização
A binarização é o método mais simples de deve-se atentar para o ponto de corte
segmentação de imagens. Resumidamente representado na imagem como “T”, pois é onde
consiste em separar um imagem, originalmente se deve escolher os elementos a serem
em tons de cinza para que tenha só pixels pretos ignorados na imagem, extraindo apenas o
e brancos. Essa decisão da nova cor que terá o desejado. O ponto de corte pode ser encontrado
pixel é realizada de acordo com o ponto de corte a partir de um histograma. O histograma de uma
(threshold). Qualquer pixel com intensidade imagem descreve a distribuição estatística dos
menor ou igual ao ponto de corte passa a ser níveis de cinza em termos do número de
preto. Se o pixel tiver intensidade maior que o amostras ("pixels") com cada nível. A distribuição
ponto de corte passa a ter a cor branca. Uma pode também ser dada em termos da
imagem digital pode ser escrita como uma função percentagem do número total de "pixels" na
f(x,y), a resposta da binarização é a função g(x,y) imagem, vale ressaltar que quanto mais bimodal
for o histograma, mais fácil é a localização do
ponto de corte.

ISSN: 1234-9876 Indicar a autoria


Volume 2018 3

Limiarização com o OpenCV

O OpenCV (Open Source Computer Vision


Library) é uma biblioteca Open Source (Código
aberto) escrita nativamente em C ++, conta
com mais de 2500 algoritmos otimizados,
voltados a processamento de imagens. Ele
tem um papel fundamental na eliminação de
 Um histograma RGB é produzido quando o ruídos, ou seja, realiza a binarização da
computador varre a imagem em cada um desses
valores de brilho RGB e conta quantos pixels há imagem para assim passar a etapa de
em cada nível de 0 a 255. identificação dos caracteres.

Reconhecimento de caracter
com o Tresseract

O Tresseract é uma biblioteca Open source


(Código aberto) da Google para
reconhecimento ótico de caracteres,
atualmente atende mais de 100 idiomas, hoje
é até usado na detecção de spam de imagens
do Gmail. No nosso experimento utlizamos sua
plataforma em Python chamada de
pytesseract, por conter a biblioteca PIL
(Python Image Library) que possibilita
trabalhar com diversos formatos de imagem
(jpeg, png, gif, bmp, tiff…). Podemos notar a
simples implementação do codigo utilizando
apenas o tresseract:

import pytesseract as ocr

from PIL import Image

captcha =
 O exemplo indica uma grande ocr.image_to_string(Image.open('captcha.jpg'), lang='por')
quantidade de pixels com níveis de
print(captcha)
cinza entre 0.6 e 0.8

ISSN: 1234-9876 Indicar a autoria


Volume 2018 4

Mão na massa – Codigo fonte da


# aplicação da truncagem binária para a
implentação Tresseract com intensidade

OpenCV # pixels de intensidade de cor abaixo de 127


serão convertidos para 0 (PRETO)
# pixels de intensidade de cor acima de 127
serão convertidos para 255 (BRANCO)
import pytesseract as ocr
# A atrubição do THRESH_OTSU incrementa uma
import numpy as np
análise inteligente dos nivels de truncagem
import cv2
ret, thresh = cv2.threshold(im, 127, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)

from PIL import Image

# reconvertendo o retorno do threshold em um


objeto do tipo PIL.Image
# tipando a leitura para os canais de ordem
binimagem = Image.fromarray(thresh)
RGB
Imagem =
Image.open('captcha.jpg').convert('RGB')
# chamada ao tesseract OCR por meio de seu
wrapper
phrase =
# convertendo em um array editável de
ocr.image_to_string(binimagem, lang='por')
numpy[x, y, CANALS]
npimagem =
np.asarray(imagem).astype(np.uint8)
# impressão do resultado
print(phrase)

# diminuição dos ruidos antes da binarização


npimagem[:, :, 0] = 0 # zerando o canal R
(RED)
npimagem[:, :, 2] = 0 # zerando o canal B
(BLUE)

# atribuição em escala de cinza


im = cv2.cvtColor(npimagem,
cv2.COLOR_RGB2GRAY) Qual a contribuição?

ISSN: 1234-9876 Indicar a autoria


Volume 2018 5

CONCLUSÃO

A pesquisa foi orientada para estudar o composição não havia deformidades nos
reconhecimento de caracteres através de caracteres, como: ondulações e riscos
processamento de imagem com o objetivo de sobrepondo a frase, e não se constatando erros
estressar testes de identificação de CAPTCHAs. no reconhecimento de caracteres para imagens
A principal técnica citada a binarização é com resolução e qualidade aceitável. Com o uso,
fundamental no tratamento da imagem e ainda que depreciado, os CAPTCHAs são uma
reconhecimento do caracter. A implementação forma de evitar ataques de robôs em aplicações,
combinando as bibliotecas mostraram-se a utilidade para sistemas legados, são válidos e
eficiente no reconhecimento de letras e devem haver preocupação em manter o seu
números. Os aplicação mostraram uma grande propósito por meio de testes diferenciando
eficiência para CAPTCHAs em que sua homens de maquinas.

BIBLIOGRAFIA

SOBRENOME, Nome. Título da obra. Cidade: BRASIL. Este formato para artigos públicos.
Editora, 20xx. Cidade: Senado Federal, 20XX.

____________. Utilize este formato quando tiver


mais de uma obra do mesmo autor. Cidade:
Editora, 20XX.

EMPRESA. Utilize o nome da empresa que


publica a obra quando não estiver indicado o
autor. Cidade: Editora, 20XX.

AUTOR. Utilize este format para artigos de


internet. Disponível em:
www.sitedoartigo.com.br. Acessado em:
dd/mm/aaaa

FULANO, Nome; BELTRANO, Nome; CICLANO,


Nome. Este formato para mais de três autores.
Cidade: Editora, 20XX.

SOBRENOME, Nome, et al. Este formato quando


tiver mais de três autores. Cidade: Editora, 20XX.

SOBRENOME FILHO. Nome. Este formato para


nomes compostos. Cidade: Editora, 20XX.

ISSN: 1234-9876 Indicar a autoria

Você também pode gostar