captchaReceita2

Quebrando o captcha da Receita Federal - v2

Stars
46
Committers
1

** ESTE PACOTE NO EST MAIS ATIVO: TEMOS UMA VERSO MELHORADA AQUI **

Esse pacote serve para quebrar o captcha da Receita Federal que aparece neste endereo.

Um exemplo deste captcha pode ser observado na imagem abaixo.

library(captchaReceita)
#> Loading required package: magrittr
library(magrittr)
a <- download() %>% ler()
b <- download() %>% ler()
a %>%
  desenhar()
b %>% 
  desenhar()

Preparao do banco de dados

Depois da classificao de 1100 captchas manualmente. Criamos um algoritmo capaz de process-los em formatos que podem ser inseridos em um algoritmo de classificao.

Por exemplo, a imagem tratada fica neste formato.

a %>% captchaReceita:::processar() %>% desenhar()
b %>% captchaReceita:::processar() %>% desenhar()

Usamos a funo preparar para preparar um banco de dados completo.

bd <- preparar(dir = "data-raw/")

Modelagem

Depois de preparar o banco de dados, separamos o banco de dados em construo e validao e ajustamos um modelo de random forest.

A funo separar separa o banco em duas partes.

bd_s <- separar(bd)

O ajuste do modelo foi realizado da seguinte forma.

library(randomForest)
modelo <- randomForest(letras ~ ., data = bd_s$treino %>% dplyr::select(-arqs))

Agora podemos verificar o acerto na base de validao com o seguinte comando:

#> randomForest 4.6-12
#> Type rfNews() to see new features/changes/bug fixes.
calcular_erro(bd_s$teste)
#>    acerto     valor
#> 1 captcha 0.8100000
#> 2   letra 0.9633333

Previso

Para prever p/ um novo captcha, use os seguintes comandos:

arq <- download()
arq %>% ler() %>% desenhar()
decodificar(arq, modelo)
#> [1] "1hl8xm"