BACHARELADO EM SISTEMAS DE INFORMAÇÃO
MATEUS PASTORI
FERRAMENTA PARA DIGITALIZAÇÃO DE ACERVOS BASEADA EM
CROWDSOURCING
CAXIAS DO SUL, RS 2015
UNIVERSIDADE DE CAXIAS DO SUL
CENTRO DE COMPUTAÇÃO E TECNOLOGIA DA INFORMACÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO
MATEUS PASTORI
FERRAMENTA PARA DIGITALIZAÇÃO DE ACERVOS BASEADA EM
CROWDSOURCING
Projeto de Diplomação submetido ao curso de Bacharelado em Sistemas de Informação do Centro de Computação e Tecnologia da Informação da Universidade de Caxias do Sul, como requisito obrigatório para graduação. Orientadora: Maria de Fátima Webber do Prado Lima.
CAXIAS DO SUL, RS 2015
MATEUS PASTORI
FERRAMENTA PARA DIGITALIZAÇÃO DE ACERVOS BASEADA EM
CROWDSOURCING
Projeto de Diplomação submetido ao curso de Bacharelado em Sistemas de Informação do Centro de Computação e Tecnologia da Informação da Universidade de Caxias do Sul, como requisito obrigatório para graduação. Orientadora: Maria de Fátima Webber do Prado Lima.
Aprovado em: ____/____/________
Banca Examinadora
____________________________________________ Profa. Dr. Maria de Fátima Webber do Prado Lima Universidade de Caxias do Sul - UCS
____________________________________________ Prof. Me. Giovanni Ely Rocco
Universidade de Caxias do Sul - UCS
____________________________________________ Prof. Dr. Ricardo Vargas Dorneles
Dedico este trabalho à minha família, à minha namorada e aos meus amigos, em especial a minha mãe Neusa, ao meu pai Adriano e a minha irmã Tamara, por sempre me apoiarem, por estarem ao meu lado nos momentos difíceis, por estarem sempre dispostos a me ajudar, por sempre acreditarem no meu potencial, e por se constituírem diferentemente enquanto pessoas, igualmente belas e admiráveis em essência, estímulos que me impulsionaram a buscar vida nova a cada dia, meus agradecimentos por terem aceito se privar de minha companhia pelos estudos, concedendo a mim a oportunidade de me realizar ainda mais.
RESUMO
Apesar dos sistemas de reconhecimento ótico de caracteres (OCR) terem evoluído consideravelmente nas últimas décadas, eles ainda apresentam algumas falhas, principalmente tratando-se da digitalização de documentos antigos. No entanto, com a rápida expansão da internet nos últimos anos e os bilhões de usuários espalhados pelo planeta, novos paradigmas de interação humano-computador vêm ganhando força, como é o caso do crowdsourcing. Esse paradigma baseia-se na colaboração on-line em escala massiva, ou seja, o seu principal objetivo é utilizar a capacidade intelectual humana, de uma multidão de usuários, para resolver algum problema computacional aberto. Um desses problemas é o reconhecimento ótico de caracteres, que pode ser facilmente resolvido utilizando uma ferramenta baseada em crowdsourcing. Baseando-se nisso, esse trabalho teve como principal objetivo desenvolver um protótipo para a digitalização de acervos, que utilize um software de OCR, e que faça o uso do crowdsourcing, buscando corrigir as eventuais falhas resultantes do mesmo. O estudo de algumas ferramentas revelou que isso pode ser feito utilizando mecanismos de segurança para websites, denominados CAPTCHAs. A principal função de um CAPTCHA é distinguir usuários humanos de máquinas. O CAPTCHA pode ser utilizado em diversos tipos de websites, como sites de enquetes on-line e de contas de e-mail. Esse fato torna o CAPTCHA um mecanismo de crowdsourcing extremamente poderoso, por oferecer a possibilidade e facilidade de ser utilizado em larga escala. Definidas a arquitetura e as ferramentas a serem utilizadas, foi desenvolvido um protótipo composto de uma aplicação web e uma API CAPTCHA. A aplicação web possibilita a digitalização de documentos, para isso ela faz uso de um software OCR. A API CAPTCHA atua como uma ferramenta de crowdsourcing, cuja a função é resolver as falhas resultantes do processamento do OCR.
Palavras-chave: Reconhecimento ótico de caracteres. OCR. Crowdsourcing. CAPTCHA. Colaboração on-line.
LISTA DE ILUSTRAÇÕES
FIGURA 1 – Exemplo de CAPTCHA baseado em OCR ... 20
FIGURA 2 – Exemplo do CAPTCHA Bongo ... 21
FIGURA 3 – Exemplo do CAPTCHA Pix ... 21
FIGURA 4 – reCAPTCHA ... 23
FIGURA 5 – Exemplos de detecção de limites de colunas ... 28
FIGURA 6 – Suavização e remoção de ruídos ... 29
FIGURA 7 – Grau de enviesamento e correção ... 30
FIGURA 8 – Grau de inclinação do caractere ... 30
FIGURA 9 – Análise/definição de contorno ... 31
FIGURA 10 – Afinamento ... 31
FIGURA 11 – Arquitetura KA-CAPTCHA ... 44
FIGURA 12 – Arquitetura proposta por Costa (2010) ... 44
FIGURA 13 – Arquitetura do Ambiente GWIDO ... 45
FIGURA 14 – Principais componentes da arquitetura proposta ... 46
FIGURA 15 – Modelo MVC da aplicação proposta ... 49
FIGURA 16 – Diagrama de casos de uso da interface web ... 51
FIGURA 17 – Diagrama de classes do sistema, classes do aplicativo OCR ... 52
FIGURA 18 – Diagrama de classes do sistema, classes da API CAPTCHA ... 52
FIGURA 19 – Diagrama EER simplificado da aplicação ... 53
FIGURA 20 – Layout demonstrativo do jQuery File Upload Plugin ... 56
FIGURA 21 – Exemplo de fragmento de palavra digitalizada ... 58
FIGURA 22 – Exemplo de XML com o resultado do processamento ... 58
FIGURA 24 – Diagrama de classes da integração entre protótipo e o Tesseract-OCR ... 60
FIGURA 25 – Diagrama EER remodelado do protótipo ... 61
FIGURA 26 – Diagrama de classes de cadastro e autenticação de usuário ... 62
FIGURA 27 – Interface de cadastro do usuário ... 62
FIGURA 28 – Interface de autenticação do usuário ... 63
FIGURA 29 – Interface para upload e digitalização de arquivos ... 63
FIGURA 30 – Diagrama de classes da API CAPTCHA ... 65
LISTA DE TABELAS
TABELA 1 – Divisão de sistemas Crowdsourcing ... 16
TABELA 2 – Percentual de palavras erradas ... 35
TABELA 3 – Percentual de caracteres errados ... 35
TABELA 4 – Tempo de execução ... 36
TABELA 5 – Testes software Tesseract ... 37
TABELA 6 – Testes software OCROpus ... 38
TABELA 7 – Testes software GOCR ... 39
TABELA 8 – Testes software Ocrad ... 40
TABELA 9 – Comparativo dos testes realizados entre softwares OCRs ... 41
TABELA 10 – Requisitos funcionais ... 50
TABELA 11 – Caso de Teste: Cadastro de Usuário ... 67
TABELA 12 – Caso de Teste: Autenticação de Usuário ... 67
TABELA 13 – Caso de Teste: Upload e Digitalização de Acervos ... 68
TABELA 14 – Caso de Teste: Validação da API CAPTCHA ... 69
TABELA 15 – Testes de Digitalização ... 71
LISTA DE SIGLAS
AJAX Asynchronous Javascript and XML API Application Programming Interface
CAPTCHA Completely Automated Public Turing test to tell Computers and Humans Apart CC Componente Conexo
EER Entidade Relacionamento Estendido GWIDO Games With Interaction Design Objective GWAPs Games With a Purpose
HTML HyperText Markup Language
IUT International Telecommunication Union JSON JavaScript Object Notation
MVC Model-view-controller
OCR Optical Character Recognition PDF Portable Document Format PHP PHP: Hypertext Preprocessor REST Representational State Transfer UML Unified Modeling Language XML eXtensible Markup Language
SUMÁRIO
1 INTRODUÇÃO ... 11
1.1 OBJETIVOS ... 13
1.1.1 Objetivos específicos ... 13
1.2 ESTRUTURA DO TRABALHO ... 13
2 COLABORAÇÃO ON-LINE EM ESCALA MASSIVA (CROWDSOURCING) .. 15
2.1 CLASSIFICAÇÃO DE SISTEMAS CROWDSOURCING ... 16
2.2 COMPUTAÇÃO HUMANA ... 16 2.3 CAPTCHA ... 18 2.3.1 Exemplos de CAPTCHAs ... 20 2.4 RECAPTCHA ... 22 2.5 TRABALHOS RELACIONADOS ... 23 2.6 CONSIDERAÇÕES FINAIS ... 25
3 RECONHECIMENTO ÓTICO DE CARACTERES (OCR) ... 26
3.1 PROCESSO DE DIGITALIZAÇÃO ... 26 3.1.1 Escaneamento Ótico ... 26 3.1.2 Localização e segmentação ... 27 3.1.3 Pré-processamento ... 28 3.1.4 Extração de Características ... 32 3.1.5 Classificação ... 32 3.1.6 Pós-processamento ... 33 3.2 BIBLIOTECAS OCR ... 34
3.2.1 Testes realizados no software Tesseract-OCR ... 36
3.2.2 Testes realizados no software OCROpus ... 38
3.2.3 Testes realizados no software GOCR ... 39
3.2.4 Testes realizados no software GNU Ocrad ... 40
3.3 CONSIDERAÇÕES FINAIS ... 41
4 PROPOSTA DE SOLUÇÃO ... 43
4.1 EXEMPLOS DE ARQUITETURAS ... 43
4.3 TECNOLOGIAS UTILIZADAS ... 48
4.4 MODELAGEM DO PROJETO ... 50
4.4.1 Requisitos ... 50
4.4.2 Diagramas UML ... 50
4.4.3 Banco de Dados ... 53
5 DESENVOLVIMENTO E IMPLEMENTAÇÃO DO PROTÓTIPO ... 54
5.1 INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO 54 5.2 ESTRUTURAÇÃO DO PROTÓTIPO ... 54
5.2.1 Camada de controle (Controller) ... 55
5.2.2 Camada de modelo (Model) ... 55
5.2.3 Camada de visualização (View) ... 56
5.3 INTEGRAÇÃO DO PROTÓTIPO COM O SOFTWARE TESSERACT-OCR ... 57
5.4 REMODELAGEM DA BASE DE DADOS DO PROTÓTIPO ... 60
5.5 MODELAGEM E INTERFACES DA APLICAÇÃO ... 61
5.5.1 Cadastro e autenticação de usuário ... 61
5.5.2 Upload e digitalização de arquivos ... 63
5.5.3 API CAPTCHA ... 64
5.6 CONSIDERAÇÕES FINAIS ... 66
6 CASOS DE TESTE E RESULTADOS OBTIDOS ... 67
7 CONCLUSÃO ... 80
1 INTRODUÇÃO
Pesquisas realizadas recentemente pela ITU (International Telecommunication Union) estimam que pelo menos 2.7 bilhões de pessoas possuem acesso à internet, ou seja, cerca de 39% da população mundial. Com a crescente e acelerada evolução tecnológica dos meios de comunicação, e a rápida expansão da Internet pelo planeta, esse número vem aumentando consideravelmente a cada ano, principalmente pela ascensão das redes sociais, sites de compras on-line, jogos virtuais, portais de notícias e conteúdos multimídia (DONELAN, 2010).
O imenso volume de pessoas conectadas em rede possibilitou o surgimento de um novo paradigma denominado crowdsourcing, que é um modelo de criação e/ou produção, que conta com a mão-de-obra e conhecimento coletivo, para desenvolver soluções e criar produtos. O termo crowdsourcing é utilizado principalmente para caracterizar sistemas de colaboração on-line em escala massiva ou de forma mais genérica, sistemas de colaboração on-line. A ideia de sistemas de colaboração on-line, em sua grande maioria, é utilizar o poder de processamento humano para resolver problemas que os computadores ainda não podem resolver sozinhos (BRABHAM, 2008).
Há vários exemplos de softwares que utilizam o crowdsourcing, desde jogos para smartphones, que auxiliam na busca da cura do câncer, até aplicativos de ensino de idiomas, que traduzem páginas da web enquanto os usuários aprendem uma nova língua. Esses softwares tem a capacidade de aproveitar o tempo e a inteligência intelectual humana para auxiliar na resolução de algum problema, sem que o usuário, muitas vezes, se dê conta disso.
Um dos grandes desafios computacionais é o reconhecimento de caracteres em arquivos de imagem. A digitalização de acervos impressos em papel, vem se tornando cada vez mais necessária por diversos fatores. E por mais modernos que sejam os softwares de reconhecimento de caracteres, também chamados de softwares de OCR (Optical Character Recognition), eles geralmente não conseguem reconhecer todas as palavras presentes em um documento digitalizado. Esse é um dos problemas que pode ser resolvido utilizando o poder da multidão de usuários espalhados pela internet. De fato, as palavras não reconhecidas pelo OCR podem ser enviadas para usuários comuns da internet decifrarem.
A digitalização de acervos é uma das ferramentas essenciais ao acesso e à difusão dos acervos arquivísticos constituindo-se como instrumento capaz de dar acesso simultâneo local ou remoto aos documentos digitais (documentos textuais, cartográficos e iconográficos em suportes convencionais). Além disso, essa contribui para a preservação do acervo, uma vez que restringe o manuseio dos originais (CONARQ, 2010).
Atualmente, as empresas estão adotando processos que permitam digitalizar seus documentos, sejam eles contratos, notas fiscais, processos jurídicos, entre outros documentos importantes. Segundo o CONARQ, documentos em formato digital fornecem diversas vantagens, entre as quais pode-se destacar (CONARQ, 2010):
Contribuir para o amplo acesso e disseminação dos documentos arquivísticos por meio da Tecnologia da Informação e Comunicação;
Permitir o intercâmbio de acervos documentais e de seus instrumentos de pesquisa por meio de redes informatizadas;
Promover a difusão e a reprodução dos acervos arquivísticos não digitais, em formatos e apresentações diferenciados do formato original;
Incrementar a preservação e segurança dos documentos arquivísticos originais que estão em outros suportes não digitais, por restringir seu manuseio;
O acesso rápido à informação e à preservação de documentos históricos, evitando o manuseio do documento no formato papel;
Possibilidade de acesso rápido contribuindo para decisões rápidas e aumento da produtividade;
Segurança, portabilidade e conectividade;
Economia do espaço físico, com a eliminação de documentos no formato papel. No entanto o custo e o tempo consumido para a digitalização de grandes acervos ainda é muito elevado. Há algumas empresas, no mercado, que fornecem esse tipo de serviço, mas a maioria disponibiliza apenas o serviço de digitalização do documento em formato de imagem. Juntamente com esse serviço é disponibilizado o serviço de indexação de arquivos. O processo de indexação de arquivos consiste no armazenamento de algumas informações, referentes a esses arquivos, em uma base de dados. Essa indexação tem como objetivo facilitar futuras consultas. No entanto, poucas empresas fornecem o serviço que torna possível a edição de documentos digitalizados, através de um editor de textos, e isso apenas é possível através do uso de softwares de OCR.
Os algoritmos de reconhecimento ótico de caracteres (OCR) apresentam limitações, sendo que para garantir uma tradução correta de palavras que o algoritmo não conseguiu identificar, é possível utilizar um sistema que utilize o poder da colaboração on-line em escala massiva, onde seres humanos farão o reconhecimento dessas palavras.
O projeto denominado reCAPTCHA já vem utilizando, há algum tempo, esse conceito de crowdsourcing em conjunto com sistemas de OCR para auxiliar na digitalização de livros. A ideia do reCAPTCHA consiste em utilizar os seres humanos para identificar as palavras que os algoritmos de OCR não conseguiram traduzir corretamente. A nível de curiosidade, os algoritmos de OCR não conseguem reconhecer cerca de 30% das palavras de um livro antigo (AHN, 2011). No entanto, esse projeto é fechado, ou seja, não é possível que usuários comuns enviem arquivos para serem digitalizados. A fim de disponibilizar esse serviço de forma livre, o principal objetivo deste trabalho consiste no desenvolvimento de uma API (Application Programming Interface) baseada no mesmo conceito utilizado pelo reCAPTCHA. Posteriormente, será desenvolvido um website simples que permita validar a API desenvolvida. 1.1 OBJETIVOS
O objetivo desse trabalho consistiu no desenvolvimento de uma aplicação web que dê suporte a digitalização de acervos. Para tanto, a aplicação faz o uso de um software OCR, juntamente com uma ferramenta de colaboração on-line baseada no mesmo conceito utilizado pelo reCAPTCHA. Destaca-se que o aplicativo não faz a digitalização e o reconhecimento dos caracteres de forma instantânea, ou seja, para a utilização da mesma devem ser utilizados arquivos de imagens previamente digitalizadas.
1.1.1 Objetivos específicos
De forma a atingir o objetivo geral apresentado, o trabalho foi orientado pelos seguintes objetivos específicos:
Desenvolvimento de um aplicativo para reconhecimento de caracteres, utilizando uma biblioteca OCR;
Desenvolvimento de API baseada na ideia do reCAPTCHA, para que websites possam utilizá-la como ferramenta de segurança;
Desenvolvimento de um website simples que permita validar a API desenvolvida. 1.2 ESTRUTURA DO TRABALHO
O segundo capítulo aborda os conceitos básicos de crowdsourcing, como surgiu, o que significa e como ele pode ajudar a humanidade. Nesse capítulo também são abordados os conceitos de computação humana e como ela pode trabalhar de forma conjunta com sistemas baseados no crowdsourcing. Além disso, cita exemplos de sistemas que utilizam testes de turing automatizados, como é o caso do CAPTCHA, e como ele pode ser usado para digitalizar livros em larga escala.
No terceiro capítulo são abordados os principais componentes de um sistema OCR, seu funcionamento, seus pontos críticos, falhas e soluções. Nesse capítulo também são estudados alguns softwares OCR open source, para a definição de qual seria utilizado na elaboração da proposta de solução.
No quarto capitulo é exposta a proposta de solução onde são descritas as ferramentas, os padrões de projeto, as linguagens de programação e banco de dados que serão utilizados para o desenvolvimento do protótipo. Nesse capitulo também são abordados os requisitos funcionais a serem atendidos, e também a modelagem das principais classes e tabelas envolvidas no desenvolvimento da aplicação.
No quinto capítulo são expostos os detalhes sobre a solução desenvolvida. Nele são destacadas a arquitetura, as ferramentas e tecnologias utilizadas durante o desenvolvimento do protótipo.
No sexto capítulos são descritos os testes realizados e os resultados obtidos para a validação da aplicação desenvolvida.
No último capítulo do trabalho são apresentadas as considerações finais que sintetizam os resultados encontrados, além de abrir a possibilidade de futuros projetos.
2 COLABORAÇÃO ON-LINE EM ESCALA MASSIVA (CROWDSOURCING)
O conceito de crowdsourcing surgiu em 2005 e foi concebido por Jeff Howe e Mark Robinson, depois de conversas sobre empresas que estavam usando a força de trabalho de uma multidão de usuários, espalhados pela internet, para terceirizar os seus serviços. Jeff Howe e Mark Robinson chegaram à conclusão de que o que estava acontecendo era uma “terceirização para a multidão”. Juntando os termos, multidão e terceirização, em inglês respectivamente, crowd e outsourcing, foi criado um novo termo denominado crowdsourcing.
Após estudar mais de quarenta definições de crowdsourcing na literatura científica e popular, Estellés e González (2012) desenvolveram uma nova definição para o termo:
Crowdsourcing é um tipo de atividade on-line participativa na qual um indivíduo, uma
instituição, uma organização sem fins lucrativos, ou companhia propõe a um grupo de indivíduos de conhecimentos variados, heterogêneos, e número, o empreendimento voluntário de uma tarefa por meio de um chamado aberto e flexível. O empreendimento da tarefa, de complexidade variável e modulável, e no qual o grupo deve participar contribuindo com seu trabalho, dinheiro, conhecimento e/ou experiência, sempre implica em benefícios mútuos. O usuário receberá em troca benefícios que podem ser de origem econômica, reconhecimento social, autoestima, ou o desenvolvimento de habilidades individuais, enquanto o crowdsourcer receberá as contribuições oferecidas pelo usuário ao empreendimento, na qual o formato dependerá do tipo de atividade empreendida (ESTELLÉS; GONZÁLEZ, 2012).
Segundo Howe (2008), o conceito de crowdsourcing teve início em benefício dos softwares open source (livres), ou de código aberto. O sistema operacional Linux, o software para servidores Apache e o navegador Firefox, são alguns exemplos de como uma comunidade de pessoas, que pensam de forma similar, é capaz de criar um produto de alta qualidade, e que compete com softwares de grandes corporações como, por exemplo, a Microsoft. Em suma, a motivação dessa comunidade de pessoas, é criar algo que trará benefícios a todos, e é nisso que o crowdsourcing se sustenta. A constante evolução dos softwares de código aberto se deve a cooperação ou colaboração de desenvolvedores espalhados pela rede, que ao encontrarem uma falha ou uma necessidade de melhoria, estão prontamente dispostos a corrigi-lo, ou melhorá-lo. Essa intensa interação acaba tornando o produto cada vez mais seguro, interativo e de fácil usabilidade (HOWE, 2008).
Howe (2008), destaca o potencial que a internet tem de interligar a humanidade bem como de fazer disso um organismo próspero e infinitamente poderoso. O constante crescimento da internet, permite explorar uma forma de trabalho humana muito primitiva, a divisão de tarefas. Dividir uma tarefa, como escrever uma exaustiva enciclopédia, em pequenos pedaços, torna o processo muito mais rápido e gera um resultado final de alta qualidade (HOWE, 2008). Para Estellés e González (2012), a enciclopédia on-line, Wikipédia, é um exemplo de que a cooperação ou colaboração, que vai além do desenvolvimento de softwares de código aberto.
A Wikipédia é uma enciclopédia livre, em que qualquer pessoa, de qualquer parte do mundo pode colaborar com a criação ou edição de artigos. Atualmente, ela conta com aproximadamente 14 milhões de artigos em centenas de línguas e dialetos (ESTELLÉS; GONZÁLEZ, 2012).
Howe (2008), define ainda que o termo crowdsourcing refere-se a criação, execução, solução, inovação, e que pode vir de qualquer lugar, não importando a origem, raça, sexo, idade e qualificação do colaborador. A promessa do crowdsourcing é libertar o potencial criativo de um indivíduo para se destacar em mais de uma área de interesse. Grandes empresas vêm adotando o crowdsourcing pois este utiliza a inteligência coletiva, favorece constante inovação, possibilita melhores resultados, e ainda reduz os custos (HOWE, 2008).
Para Howe (2008), o crowdsourcing impulsiona a globalização da mão-de-obra e o deslocamento econômico. A exemplo da internet, seu meio de operação, o crowdsourcing não tem fronteiras. Ou seja, a rede não se importa se o usuário está na mesma rua, mesmo estado, ou do outro lado do mundo, esse é o grande benefício do uso de crowdsourcing (HOWE, 2008). Para Quinn e Bederson (2011), o crowdsourcing é um paradigma de aquisição da informação emergente e poderosa que apareceu sob muitos nomes, incluindo computação social, inteligência coletiva e computação humana (QUINN; BEDERSON, 2011).
2.1 CLASSIFICAÇÃO DE SISTEMAS CROWDSOURCING
Segundo Doan (2011), sistemas de crowdsourcing podem ser classificados em várias dimensões. A Tabela 1 apresenta as diversas classificações possíveis para sistemas crowdsourcing, bem como, alguns exemplos de sua aplicação. Da esquerda para a direita, a tabela é organizada pela natureza da colaboração, arquitetura, necessidade de recrutar os usuários e ações que os usuários podem tomar.
2.2 COMPUTAÇÃO HUMANA
Na ciência da computação, computação humana, é um paradigma no qual um computador terceiriza algumas etapas do processo para serem computadas por seres humanos. Computadores foram criados, inicialmente, para auxiliar os seres humanos na resolução de problemas. Nesse caso, humanos interagem com um computador fornecendo descrições detalhadas de um problema, para que este seja processado e forneça um resultado para ser interpretado. Na computação humana frequentemente os papéis são invertidos, onde o computador utiliza um grupo de pessoas para resolver um problema, então coleta, processa e integra os resultados. Dessa forma, parte do processamento é realizado por computadores e parte por humanos (QUINN; BEDERSON, 2011).
TABELA 1 - Divisão de sistemas Crowdsourcing (Continua) Natureza da colaboração Arquitetura Recruta usuários?
O que os usuários fazem? Exemplos Problemas alvo Comentários
Explicitas Standalone Sim Avaliação
Revisão, voto, rotulação.
Revisar e votar na Amazon. Avaliação de uma coleção de itens (por exemplo, produtos, usuários)
Seres humanos como os prestadores de perspectiva. Ausência ou combinação flexível das contribuições. Compartilhamento Itens; Conhecimento textual; Conhecimento estruturado. Napster, YouTube,
FlickrMailing lists, Yahoo! Answers, QUIQ, ehow.com; Swivel, Many Eyes, Google
Fusion Tables, Google Base, bmrb.wisc.edu.
Construção de uma coleção de itens (distribuídos ou centrais) que podem ser compartilhados entre os usuários.
Seres humanos como os
provedores de
conteúdo. Ausência ou combinação frouxa das contribuições.
Networking Linkedin, MySpace,
Facebook.
Construção de redes sociais Seres humanos como os
provedores de
componentes. Ausência ou combinação flexível das contribuições. Construindo artefatos Software; Bases de conhecimento textual; Bases de conhecimento estruturadas; Sistemas; Outros.
Linux, Apache, Hadoop; Wikipedia, openmind,
Intellipedia, ecolicommunity; Wikipedia
infoboxes/DBpedia, IWP, Google Fusion Tables; Wikia Search, mahalo,
Freebase, Eurekster;
Newspaper at Digg.com, Second Life.
Construção de artefatos físicos
Os seres humanos podem desempenhar todas as funções. Normalmente uma combinação firme das contribuições. Alguns sistemas pedem para seres humanos e máquinas para contribuir.
Execução de tarefas Encontrar extraterrestres, eleições, encontrar pessoas, criação de conteúdo (por exemplo a Demand Media, Associated Content).
Possivelmente qualquer problema
(Conclusão) Natureza da colaboração Arquitetura Recruta usuários? O que os usuários fazem?
Exemplos Problemas alvo Comentários Implícitas Standalone Sim Jogar jogos com um
objetivo;
Apostar em mercados de previsão;
Uso de contas privadas; Resolver CAPTCHAs; Comprar/vende/leiloar,
jogar jogos com
multiplayers maciços.
ESP;
intrade.com, Iowa Electronic Markets;
IMDB private accounts; recaptcha.net;
eBay, World of Warcraft.
Rotulação; Previsão de eventos; Classificando filmes; Digitalizando texto escrito; Construção de uma comunidade de usuários (para fins de cobrança de taxas, publicidade).
Os seres humanos podem desempenhar todas as funções. Combinação flexível ou firme das contribuições.
Piggyback
em outro sistema
Não Busca por palavra-chave; Comprar produtos; Procurar websites.
Google, Microsoft, Yahoo; O recurso de recomendação
da Amazon;
Web sites adaptativos (por exemplo, a primeira página do Yahoo!). Correção ortográfica, previsão de epidemias; Recomendação de produtos; Reorganizar um site para um melhor acesso.
Os seres humanos podem desempenhar todas as funções. Combinação flexível ou firme das contribuições.
A partir da união dos dois paradigmas, crowdsourcing e computação humana, podem-se criar sistemas de colaboração on-line em escala massiva ou de forma mais genérica, sistemas de colaboração on-line. Ou seja, sistemas que utilizam o poder de processamento humano de uma multidão de usuários, espalhados pela internet, para realizar algumas tarefas que envolvam a computação humana (QUINN; BEDERSON, 2011).
Sistemas de colaboração on-line se concentram em aproveitar o tempo e a energia humana para resolver tais problemas. Tarefas como reconhecimento de imagens são triviais para seres humanos, mas continuam desafiando até mesmo os programas de computadores mais sofisticados. Segundo Luis Von Ahn (2005), embora os computadores tenham avançado significativamente em muitos aspectos, eles ainda não possuem a capacidade intelectual ou a percepção conceitual básica dos seres humanos (ANH, 2005).
Ainda segundo Luis Von Ahn (2005), neste paradigma de colaboração on-line, os cérebros humanos são tratados como processadores em um sistema distribuído, onde cada um executa uma parte de uma computação massiva. Ao contrário dos processadores, os seres humanos necessitam de um incentivo para tornar-se parte de um processo coletivo. Jogos on-line são uma forma de incentivar a participação nesse processo. Assim, os jogos constituem basicamente um mecanismo geral que visa usar o poder do cérebro humano para resolver problemas computacionais abertos. Dessa forma, cada problema exige uma concepção cuidadosa para que o jogo desenvolvido seja agradável e, ao mesmo tempo, garanta a resolução correta das instâncias do problema. A concepção de tais jogos é similar ao projeto de algoritmos de computador, mas ao invés de usar um processador de silício, esses "algoritmos" executam em um sistema composto por seres humanos que interagem com computadores através da Internet (ANH, 2005).
2.3 CAPTCHA
Há alguns anos Luis Von Ahn introduziu uma nova ferramenta de segurança para websites denominada CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). Essa ferramenta impede que “robôs”, ou seja, scripts que simulam as ações humanas inúmeras vezes e de maneira padrão, criem, por exemplo, milhares de contas de e-mail em um website que disponibiliza esse serviço, ou ainda, para evitar que websites que necessitem de login, sofram ataques de invasão por força bruta. Os CAPTCHAs nada mais são do que testes para verificar se o usuário em questão é um humano. Esses testes consistem em exibir uma imagem com algumas letras e números, embaralhados e distorcidos, que somente um humano pode distinguir (ANH, 2005).
Os CAPTCHAs são basicamente testes de Turing automatizados. No teste de Turing original, um juiz humano foi autorizado a fazer uma série de perguntas para dois jogadores, um deles era um computador e outro um ser humano. Ambos os jogadores fingiam ser um humano, e o juiz teve que distinguir qual deles era realmente um ser humano. Os CAPTCHAs são semelhantes aos testes de Turing, onde o objetivo é distinguir os humanos de computadores, mas a diferença é que o juiz, nesse caso, é um computador (ANH, 2005).
Anh (2005), destaca que atualmente CAPTCHAs são úteis para muitas aplicações, sendo que entre essas se destacam (ANH, 2005):
Enquetes on-line: na maioria das enquetes on-line, os endereços IP dos eleitores são registrados para evitar que os usuários votem mais de uma vez. No entanto, já existem formas de burlar esse sistema de registros de IP, e isso acaba tornando as enquetes on-line pouco confiáveis. O uso de um registro de IP combinado com o uso de um CAPTCHA, para validar se o eleitor em questão é um ser humano, é o ideal; Serviço gratuito de e-mail: várias empresas como por exemplo, Google, Yahoo! e Microsoft, oferecem serviços de e-mail gratuito. A maioria delas sofria com algum tipo de ataque realizado por “robôs”, que criavam milhares de contas de e-mail a cada minuto. Esse problema foi solucionado exigindo que os usuários provem que são humanos, antes que eles possam criar a conta de e-mail gratuita. A maioria dessas empresas adota algum tipo de CAPTCHA para impedir que “robôs” criem contas falsas;
Robôs de motores de busca: alguns sites não querem ser indexados por motores de busca. Existe uma tag HTML que evita que os “robôs” de motores de busca, indexem o conteúdo das páginas do site, mas isso não garante que esses “robôs” não leiam o conteúdo das páginas. A fim de garantir que esses “robôs” não leiam o conteúdo do site, o uso de algum tipo de CAPTCHA pode ser necessário;
Prevenção de ataques de dicionário (força bruta): os CAPTCHAs também podem ser usados para evitar ataques de dicionário em sistemas que requerem autenticação através de usuário e senha. De fato, o uso de um CAPTCHA evita que um computador seja capaz para percorrer todo o espaço de senhas.
2.3.1 Exemplos de CAPTCHAs
Pode-se considerar um CAPTCHA qualquer tipo de teste que utilize alguma capacidade sensorial humana e que possa interagir com o usuário através de um computador. Alguns exemplos de CAPTCHAs são:
CAPTCHAs baseados em OCR (Optical Character Recognition): esse é um dos CAPTCHAS mais usados atualmente, e está baseado na dificuldade de leitura de um texto distorcido. Esses baseiam-se na escolha de algumas palavras de um dicionário que são processadas em uma imagem distorcida (Figura 1). O usuário então deve identificar e digitar corretamente as palavras distorcidas. A maioria dos seres humanos conseguem ler as palavras dessa imagem distorcida, mas softwares atuais não possuem essa capacidade. Dessa forma, os CAPTCHAs baseados em OCR se baseiam na dificuldade de reconhecimento óptico de caracteres, ou seja, a dificuldade de ler um texto distorcido;
FIGURA 1 – Exemplo de CAPTCHA baseado em OCR
Fonte: FACEBOOK.
CAPTCHAs baseados no reconhecimento de padrões visuais: Anh (2005) cita o Bongo com um exemplo de CAPTCHA baseado no reconhecimento de padrões visuais. Esse CAPTCHA exibe dois conjuntos de blocos, um a esquerda e outro à direita (Figura 2). Os blocos do conjunto da esquerda diferem daqueles do conjunto direita, e o usuário deve encontrar a característica que os diferencia. Depois de ver os dois conjuntos de blocos, é apresentado ao usuário um único bloco, e então ele deve determinar se este bloco pertence ao conjunto da direita ou ao conjunto da
esquerda (Figura 2). Assim, o usuário passa no teste se ele determinar corretamente a qual lado pertence o bloco (ANH, 2005);
CAPTCHAs baseado no reconhecimento de objetos em imagens: o Pix é outro CAPTCHA citado por Anh (2005), sendo que esse baseia-se no reconhecimento de objetos em imagens. Esse tipo de CAPTCHA possui um banco de dados com um grande acervo de imagens, sendo que essas imagens estão indexadas conforme os objetos que aparecem nelas. Seu funcionamento baseia-se na escolha de um objeto qualquer, e em seguida são procuradas, em seu banco de dados, quatro imagens que possuem esse objeto. Posteriormente, essas imagens são apresentadas para o usuário que deve responder a seguinte pergunta "O que há nessas imagens?" (Figura 3). O Pix pode ser considerado um CAPTCHA, uma vez que os softwares atuais ainda não são capazes de fazer o reconhecimento de objetos em imagens (ANH, 2005);
FIGURA 2 – Exemplo do CAPTCHA Bongo
Fonte: (ANH, 2005).
FIGURA 3 – Exemplo do CAPTCHA Pix
CAPTCHAs baseados em sons: o último CAPTCHA a ser citado é baseado em sons. Neste tipo de CAPTCHA, o programa escolhe uma palavra ou uma sequência de números aleatoriamente, e converte-os para um formato sonoro e distorcido. Em seguida, o usuário deverá digitar o conteúdo existente nesse som, para passar no teste. Este CAPTCHA baseia-se na diferença de capacidade entre os seres humanos e os computadores no reconhecimento da linguagem falada.
Os CAPTCHAs tiram proveito da capacidade humana, a fim de diferenciar os seres humanos de computadores, e fazer isso tem importantes aplicações práticas. A além disso, há muitas tarefas que os humanos podem facilmente fazer que os computadores ainda não podem resolver. Na próxima seção, veremos como um CAPTCHA pode ser usado a fim de resolver um problema computacional aberto.
2.4 RECAPTCHA
Com milhares de websites adotando o CAPTCHA baseado em OCR como ferramenta de segurança, e cerca de 200 milhões de CAPTCHAs digitados diariamente, Luis Von Ahn percebeu que esse sistema poderia ser utilizado para algo útil, foi então que surgiu o reCAPTCHA. O funcionamento do reCAPTCHA é basicamente o mesmo do CAPTCHA, mas ele implementa um outro conceito, isso é, além de testar se o usuário é um humano, ele também ajuda a digitalizar livros.
O reCAPTCHA utiliza duas palavras para testar se o usuário realmente é um humano. O motivo pelo qual ele utiliza duas palavras ao invés de uma, consiste no fato de que uma das palavras foi digitalizada, mas não foi identificada através do algoritmo de OCR (Figura 4). Dessa forma, o sistema não sabe qual é a resposta para essa palavra, então ele não pode avaliar se o usuário é um humano. O que vai testar isso é uma segunda palavra, que possui o resultado conhecido pelo sistema. Para garantir o reconhecimento correto para a palavra desconhecida, que foi retirada do livro, o sistema envia a mesma palavra para inúmeros usuários, se todos, ou a maior parte deles, concordarem com o mesmo resultado, a nova palavra é digitalizada (AHN, 2011).Em média, para digitar um CAPTCHA, cada usuário demora 10 segundos, multiplicando esse número por 200 milhões, temos 550 mil horas de esforço humano em um único dia. Dessa forma, apenas com o uso do reCAPTCHA é possível digitalizar cerca 2,5 milhões de livros anualmente (AHN, 2011). Esse número é significativo, se for considerado o tempo e os custos que uma empresa especializada levaria para executar a mesma tarefa. Com isso é possível perceber que o reCAPTCHA é uma poderosa ferramenta de crowdsourcing, em que é
aproveitado um curto espaço de tempo do usuário, mas que multiplicado pelos milhões de usuários espalhados pela internet, é possível realizar a digitalização de um grande acervo de livros ou documentos.
2.5 TRABALHOS RELACIONADOS
Sistemas baseados em crowdsourcing permitem a invocação flexível e a utilização em larga escala da contribuição humana para a coleta e análise de dados, que introduz um novo paradigma de processo de mineração de dados. Os métodos tradicionais de mineração de dados, muitas vezes necessitam de especialistas em domínios analíticos para anotar os dados. No entanto esse processo é dispendioso e, normalmente, demora um longo tempo. O crowdsourcing permite o uso do conhecimento heterogêneo de voluntários e distribui o processo de anotação em pequenas partes (XINTONG, 2014).
Em alguns tipos de cenários, o crowdsourcing pode ajudar as pessoas a resolver problemas de uma forma mais eficiente. Um exemplo de problema enfrentado na mineração de dados é o de classificação dos dados. Os dados, geralmente, são rotulados e usados para treinar um classificador que posteriormente deverá classificar novos dados (XINTONG, 2014).
Além da classificação, vários outros tipos de funções de mineração de dados podem ser realizados por meio de crowdsourcing, como, por exemplo, clustering, aprendizagem semi-supervisionada, e regras de associação. Algoritmos tradicionais têm dificuldades em lidar com esses problemas, pela falta de conhecimento. Nessas situações, o poder das multidões pode
Fonte: (ANH, 2008).
realizar essas tarefas de forma mais precisa, flexível e eficiente do que os algoritmos existentes (XINTONG, 2014).
Outra aplicação potencial para o crowdsourcing é o apoio a tomada de decisões. Um problema complicado que é difícil para uma pessoa, pode ser resolvido pela multidão. Multidões podem fornecer ideias de forma colaborativa ou em um modo competitivo. No entanto, o papel da multidão pode ser diferente em diferentes fases do processo de tomada de decisão. Pode-se utilizar a multidão para fornecer informações sobre um problema complexo ou usar a multidão para ajudar a decidir se um projeto é útil. Esse processo de tomada de decisão geralmente é dividido em três fases principais (CHIU; LIANG; TURBAN, 2014):
Inteligência: Nessa fase as informações são coletadas e compartilhadas com a finalidade de resolução de problemas ou a exploração de oportunidades, identificação de problemas, bem como a determinação da importância do problema;
Design: Nessa fase as ideias e/ou soluções alternativas são geradas pela multidão; Escolha: Finalmente, nessa fase, ocorre a avaliação das alternativas geradas e, em
seguida, é selecionado o melhor curso de ação.
Crowdsourcing ainda pode ser usado como ferramenta em atividades de marketing. Segundo Whitla (2009), há três áreas de aplicação crowdsourcing nessa área (GATAUTIS; VITKAUSKAITE, 2013, apud WHITLA, 2009):
Desenvolvimento de produtos; Promoção e publicidade; Pesquisa de marketing.
Para o desenvolvimento de novos produtos algumas empresas utilizam o potencial das tecnologias de comunicação e informação para a obtenção de entrada e/ou conselhos dos seus consumidores existentes ou potenciais. Em outros casos, as empresas buscam especialistas que identifiquem problemas que podem ser resolvidos através de determinados produtos. Em alguns casos as empresas desafiam os consumidores a fornecer um projeto para produto, seleciona o melhor e desenvolve em parceria com o autor (GATAUTIS; VITKAUSKAITE, 2013).
Nas atividades de promoção e publicidade Whitla (2009) distingue dois casos de implantação de crowdsourcing. Um deles é a busca de especialistas que podem realizar tarefas (criar design, criar flyer, criar banner, etc.), outro caso é o uso de crowdsourcers para tarefas
bastante trabalhosas, no caso da empresa não ter tempo nem recursos humanos para concluí-las (GATAUTIS; VITKAUSKAITE, 2013, apud WHITLA, 2009).
Nas pesquisas de marketing a perspectiva crowdsourcing dá oportunidade de alcançar um grande grupo de potenciais consumidores. Naturalmente, elementos motivacionais são necessários para manter o interesse e o envolvimento, mas em muitos casos o crowdsourcing oferece oportunidades mais baratas e mais rápidas para a coleta de informações de mercado (GATAUTIS; VITKAUSKAITE, 2013).
2.6 CONSIDERAÇÕES FINAIS
Neste capítulo foi apresentado o conceito de crowdsourcing, e como sistemas baseados nesse paradigma auxiliam na resolução de problemas computacionais abertos. Esse capítulo também abordou a utilização da computação humana para a resolução de problemas que os computadores e softwares atuais não podem resolver sozinhos, como por exemplo, o reconhecimento de caracteres em documentos digitalizados. Os sistemas de reconhecimento ótico de caracteres atuais não são capazes de reconhecer, em muitos casos, todas as palavras de um documento digitalizado. Para isso, a computação humana é utilizada, mas como, geralmente, esse esforço requer muito tempo, de acordo com o tamanho do acervo a ser digitalizado, é necessário distribuir essa tarefa em pequenas partes.
Essa distribuição de tarefas pode ser feita utilizando um sistema semelhante ao reCAPTCHA. O reCAPTCHA é um projeto fechado, ou seja, não é possível enviar documentos digitalizados para que ele possa interpretar. Para isso se faz necessário o uso de um sistema de OCR que interprete o máximo de palavras possíveis e o restante, das palavras não reconhecidas, sejam encaminhadas para um sistema que o utilize o poder da computação humana distribuída. No próximo capítulo são descritos os principais componentes de um sistema de reconhecimento ótico de caracteres (OCR), onde será possível conhecer as suas falhas e as técnicas utilizadas para a identificação de caracteres e palavras. Essa descrição será feita para que se tenha uma visão geral do funcionamento de um sistema de OCR, buscando compreender também o comportamento de cada componente, desse sistema, no processo de digitalização. Com isso será possível identificar quais etapas estão envolvidas no reconhecimento das palavras digitalizadas, quais são as suas principais falhas, como elas ocorrem e suas possíveis soluções.
3 RECONHECIMENTO ÓTICO DE CARACTERES (OCR)
O reconhecimento ótico de caracteres é feito, geralmente, utilizando algoritmos de OCR. Estes algoritmos são responsáveis pelo reconhecimento de caracteres a partir de arquivos de imagens, sejam eles escaneados, escritos a mão, datilografados ou impressos. Assim, com o uso destes algoritmos, é possível obter arquivos de texto editáveis.
A digitalização de um documento tem início quando esse passa por um equipamento de scanner, sendo que a imagem gerada a partir desse equipamento é processada para que todas as regiões que contenham algum tipo de texto sejam localizadas. Após, cada uma dessas regiões é segmentada e os símbolos (caracteres) presentes nela são extraídos.
Posteriormente, esses símbolos passam por um pré-processamento, onde algumas imperfeições são removidas. A remoção das imperfeições garante que haja um melhor reconhecimento das características de cada símbolo. As características então, são comparadas com as descrições das classes de símbolos, que se originam através da fase de aprendizado do sistema de OCR. Finalmente, os caracteres reconhecidos são agrupados para a formação do texto original.
Nas seções a seguir são apresentadas as etapas do processo de digitalização e as bibliotecas OCR disponíveis.
3.1 PROCESSO DE DIGITALIZAÇÃO
Para Eikvil (1993), esse processo de digitalização pode ser dividido, basicamente, em seis etapas (EIKVIL, 1993):
Escaneamento ótico; Localização e segmentação; Pré-processamento; Extração de características; Classificação; Pós-processamento. 3.1.1 Escaneamento Ótico
Através do escaneamento óptico é possível obter uma imagem digitalizada a partir de um documento. Geralmente documentos são impressos em preto-e-branco, por isso é uma boa prática converter uma imagem colorida, em uma imagem de níveis de cinza ou em preto-e-branco. Este processo, de conversão de tons de cinza, é chamado de “thresholding”, sendo que esse é frequentemente utilizado para otimizar o uso de memória e reduzir o processamento computacional (EIKVIL, 1993).
O processo de thresholding possui um grande impacto no processo de reconhecimento de caracteres. Esse processo é relativamente simples, nele um valor limite, entre o que pode ser considerado preto ou branco, é definido. Os níveis de cinza abaixo deste valor são tratados como preto e níveis de cinza acima deste valor são tratados como branco. Em documentos com alto contraste entre o preto e o branco, apenas um nível pode ser o suficiente, mas a maioria dos documentos não possuem essa característica. Sendo assim, esses valores limites são modificados dinamicamente até que se obtenha um resultado satisfatório. (EIKVIL, 1993). 3.1.2 Localização e segmentação
A localização e segmentação é uma das etapas presentes em praticamente todos os sistemas de processamento de imagens. Esse componente tem o objetivo de localizar e segmentar, ou seja, delimitar as imagens, parágrafos, linhas de texto, caracteres, palavras, blocos de texto e outros itens estruturais que compõem o documento digitalizado, de acordo com a necessidade do sistema. O funcionamento e desempenho do sistema como um todo depende de uma correta localização e segmentação. Tratando-se de um sistema de reconhecimento ótico de caracteres (OCR), a localização e segmentação ocorre em componentes de texto de uma imagem (BREUEL, 2002).
Uma das primeiras fases na segmentação de um documento, é a detecção de componentes conexos. Entende-se como um CC (Componente Conexo) um conjunto de pixels dispostos de tal maneira que pode-se chegar a qualquer outro pixel presente no componente a partir de outro pixel presente nesse mesmo componente. Ou seja, um componente conexo possui todos os seus pixels conectados de alguma maneira (BREUEL, 2002).
Os dois métodos para a solução de problemas relativos a problemas de segmentação de documentos propostos por Breuel (2002), consistem em identificar espaços retangulares em branco e identificar linhas levando-se em consideração um conjunto de espaços em branco em uma página. Pode-se utilizar o primeiro método para detectar colunas em um documento, desde que este encontre um retângulo vazio, ou seja, sem texto, entre duas colunas de texto. Esse método identifica espaços em branco de acordo com a área de cada retângulo, isso é feito através de uma fila de prioridades que é dada de acordo com o tamanho de cada retângulo, geralmente feita em ordem crescente (Figura 5). A cada iteração desse método um retângulo é retirado da fila e dividido em quatro partes que são reinseridas na fila. Quando um retângulo vazio é encontrado ele é classificado como espaço em branco e inserido na lista de CCs, isso evita que outros retângulos que possuam partes em comum a este sejam processados. Essa iteração continua até que todos os retângulos vazios sejam encontrados. O segundo método é utilizado
para encontrar linhas de texto. A Figura 5 exibe alguns exemplos de resultados da avaliação de espaços em brancos para a detecção de limites de colunas. As linhas encontradas por esse método não podem exceder os limites gerados pela detecção de espaços vazios. Esses dois métodos unidos formam uma ferramenta ideal para a segmentação de documentos (BREUEL, 2002).
FIGURA 5 – Exemplos de detecção de limites de colunas
Fonte: (BREUEL, 2002).
Segundo Wang, Lu e Tan (2003) é possível segmentar palavras em uma imagem utilizando diagramas de Voronoi. Primeiramente, os CCs são detectados e os que representam algum tipo de ruído ou caracteres especiais são descartados. O diagrama de Voronoi forma bordas que separam dois CCs. Cada uma dessas bordas é avaliada segundo um conjunto de restrições que levam em conta a distância da borda aos CCs que ela separa, essa distância é relacionada com as distâncias das outras bordas que cercam esses componentes. Caso a borda se enquadrar nas restrições ela é removida, e isso resulta na união de dois CCs. Uma das vantagens desse método é que ele dispensa a detecção de linhas e segmenta as palavras diretamente. Por outro lado, as operações realizadas pelo cálculo do diagrama de Voronoi são complexas e isso resulta em um processamento relativamente custoso (WANG; LU; TAN, 2003).
3.1.3 Pré-processamento
Dependendo do estado físico do documento digitalizado, da qualidade do equipamento de scanner utilizado na digitalização, ou ainda da técnica de thresholding escolhida, a imagem pode conter uma quantidade razoável de imperfeições que podem afetar o reconhecimento dos caracteres. A fim de diminuir, ou até eliminar essas imperfeições, a etapa de pré-processamento
é necessária (EIKVIL, 1993), sendo que Cheriet (2007) divide o pré-processamento nas seguintes etapas:
Suavização e remoção de ruídos;
Análise do grau de enviesamento e correção; Inclinação;
Análise/definição de contorno; Afinamento.
A suavização dos níveis de cinza de uma imagem é utilizada para redução de ruído e blurring. O efeito de blurring é usado na etapa de pré-processamento para a remoção de pequenas imperfeições. Além disso, utiliza-se a suavização, geralmente, para reduzir o ruído, ou ainda, para diminuir a espessura da borda dos caracteres.
FIGURA 6 – Suavização e remoção de ruídos
Fonte: (CHERIET, 2007)
Esse processo de suavização e remoção de ruídos pode ser feito utilizando técnicas de filtragem, sendo que essas técnicas de filtragem baseiam-se na análise dos pixels que estão nas proximidades (CHERIET, 2007). A Figura 6 retrata exemplos da aplicação dessa técnica, onde (a), (b) e (c) são as imagens originais; (d), (e) e (f) são respectivamente as imagens com essa técnica aplicada.
O grau de enviesamento é o valor de inclinação do texto escaneado em relação a uma linha horizontal. A Figura 7 retrata dois tipos de enviesamento. No primeiro exemplo tem-se uma palavra manuscrita enviesada (a) e, posteriormente, a palavra manuscrita corrigida (b). Já no segundo exemplo tem-se um trecho datilografado enviesado (c) e após, o mesmo trecho
datilografado corrigido (d). Isso pode ocorrer quando o documento, a ser escaneado, acaba ficando inclinando em relação ao sensor do equipamento de scanner. Nessa etapa são utilizados alguns métodos para determinar o grau de enviesamento, e posteriormente a imagem é ajustada, até que o texto apresente um grau de enviesamento igual, ou próximo a zero (CHERIET, 2007).
FIGURA 7 – Grau de enviesamento e correção
Fonte: (CHERIET, 2007)
Diferentemente do grau de enviesamento a inclinação de caracteres é encontrada principalmente em textos escritos à mão. O objetivo dessa etapa é melhorar a taxa de precisão do reconhecimento de palavras e numerais. Assim como o cálculo do grau de enviesamento, a análise da inclinação, leva em conta o grau de inclinação, mas dessa vez cada caractere é analisado individualmente (Figura 8) (CHERIET, 2007).
FIGURA 8 – Grau de inclinação do caractere
A determinação de contorno é uma técnica aplicada a um caractere para extrair o seu contorno externo e interno. Para definir os pixels onde estão as bordas de cada caractere, é feita uma comparação entre o pixel central e seus vizinhos. Com a determinação da localização dos pixels de borda pode-se definir os contornos do caractere. Definido o contorno, suas diferentes características podem ser analisadas e, posteriormente, utilizadas na classificação (CHERIET, 2007). A Figura 9 retrata um exemplo dessa técnica aplicada. No primeiro exemplo tem-se o caractere original (a), já no segundo exemplo tem-se essa técnica aplicada, mas apenas para extração do contorno externo (b), e finalmente no último exemplo, tem-se essa técnica aplicada, tanto para contornos externos quando para contornos internos (c).
FIGURA 9 – Análise/definição de contorno
Fonte: (CHERIET, 2007)
O processo de afinamento consiste em remover o máximo possível de pixels dos caracteres sem afetar o aspecto geral do caractere. Ou seja, mesmo com a remoção de pixels, o caractere ainda é reconhecível. Esse processo concentra-se em tornar o caractere o mais fino possível, sendo que os pixels devem estar todos conectados e centralizados. A partir disso, algumas características importantes podem ser extraídas como, por exemplo, número de ramificações, intersecções e posição relativa (CHERIET, 2007). Na Figura 10 é possível ver o resultado (b) dessa técnica aplicada a um trecho de texto (a).
FIGURA 10 – Afinamento
3.1.4 Extração de Características
Para Eikvil (1993) um dos grandes desafios de sistemas de OCR é extrair as características principais de cada caractere. Eikvil (1993) considera essa, uma das etapas mais difíceis realizadas pelo sistema de OCR, pois baseia-se no reconhecimento de padrões. A extração de características é uma das formas mais utilizadas para o reconhecimento de caracteres, é através dessas características que o reconhecimento dos caracteres torna-se possível. As técnicas para obtenção dessas características podem ser divididas em três grupos (EIKVIL, 1993), que são:
Transformações e expansões em séries: essas técnicas ajudam a reduzir as dimensões do vetor de características, por se basearem somente nas curvas externas dos caracteres. Essas técnicas possuem tolerância satisfatória quando se trata de rotação e translação, no entanto possui pouca tolerância a imperfeições externas;
Distribuição dos pixels: essa categoria abrange as técnicas que extraiam características baseadas na distribuição estatística dos pixels. As características obtidas são geralmente tolerantes a distorções e variações de estilo;
Análise estrutural: as características obtidas descrevem de forma geométrica e topológica os caracteres. Com essas informações pode-se descrever a parte física do caractere como, por exemplo, ranhuras, voltas, pontos de término e intersecções de linhas. Comparada às outras técnicas, a análise estrutural fornece características com alta tolerância a ruídos e variações de estilo. No entanto, não são tão satisfatórias quando se trata de rotação e translação.
3.1.5 Classificação
Cheriet (2007) afirma que a obtenção das classes de características que compõem os padrões dos caracteres é o objetivo final do reconhecimento de caracteres. O trabalho de reconhecimento consiste em ligar um conjunto pré-definido de classes a cada padrão de caracteres ou de palavras, que foram segmentados a partir de imagens de documentos. Nessa etapa então, ocorre a classificação dos segmentos extraídos, de acordo com as suas classes de características (CHERIET, 2007).
A classificação de padrões tem sido o principal tema abordado dentro da área de reconhecimento de padrões. Muitos métodos eficientes têm se originado a partir da intensa fundamentação teórica feita com relação ao reconhecimento estatístico de padrões, esses
métodos utilizam, geralmente, algoritmos baseados na teoria Bayesiana, ou ainda algoritmos baseados em redes neurais (CHERIET, 2007).
As redes neurais vêm sendo utilizadas desde o final dos anos 1980 para o reconhecimento de padrões devido ao surgimento de algoritmos compostos por redes de retro propagação. Estas redes são compostas por várias camadas de elementos interconectados. Um vetor de características entra na rede pela camada de entrada, onde cada elemento da camada calcula uma soma ponderada de sua entrada e a transforma em uma saída. Durante o treinamento, os pesos de cada conexão são ajustados até que a saída desejada seja obtida. Um problema de redes neurais em OCR pode ser a sua previsibilidade e generalidade limitada, enquanto que uma vantagem é a sua natureza adaptativa (CHERIET, 2007).
3.1.6 Pós-processamento
O simples reconhecimento de cada símbolo em um documento resulta em um conjunto individual de símbolos. Mas esses símbolos, geralmente, não representam informações isoladas. Por isso, é desejável que se associe cada símbolo, com aqueles que pertencem a mesma cadeia, criando assim, palavras e números. Esse processo de associação pode ser chamado de agrupamento, e baseia-se basicamente, na posição de cada símbolo dentro do documento. Ou seja, são agrupados os símbolos que estão próximos o suficiente uns dos outros.
A etapa de agrupamento pode apresentar alguns problemas com fontes que não tenham um tamanho padrão, uma vez que é mais difícil determinar o espaço que cada caractere ocupa. Isso pode ocorrer principalmente para documentos escritos à mão ou que possuem o texto inclinado. Geralmente, para caracteres que possuem distância variável entre eles, o agrupamento é possível, pois a distância entre uma palavra e outra é relativamente maior.
Até os sistemas de OCR mais modernos não possuem cem por cento de precisão na identificação de caracteres, mas com o uso do contexto, alguns erros podem ser detectados e até mesmo corrigidos. Por exemplo, existem mecanismos que utilizam regras de sintaxe ou ainda, se a palavra possui erros ortográficos. Um exemplo disso consiste, em que uma frase deve começar com letra maiúscula após o ponto final. Ou ainda, a língua portuguesa não possui palavras que iniciem com a letra “ç” ou que contenham três letras “r” juntas, se isso ocorrer, houve alguma falha no reconhecimento.
Uma segunda abordagem para a detecção de erros é o uso de dicionários. Essa é considerada a melhor forma de detectar e corrigir erros. Toda a palavra que possui alguma inconformidade é verificada no dicionário. Caso a palavra não exista no dicionário, ela é
alterada para uma palavra similar, mas essa abordagem também não está livre de erros. Ou seja, o OCR pode ter transformado uma palavra em outra que também exista no dicionário e, dessa forma, o erro não é detectado. Além disso, o uso de dicionários na detecção de falhas ocupa um grande tempo e esforço de processamento, sendo essa a sua principal desvantagem.
Por fim, outra abordagem, que está proposta nesse trabalho, é a utilização de uma ferramenta de crowdsourcing, para fazer a identificação das palavras e/ou caracteres não reconhecidos pelo OCR. De fato, fica claro que o componente ideal para a implantação dessa ferramenta, é o pós-processamento. É no pós-processamento que os caracteres são agrupados, as palavras formadas e reconhecidas. Desta forma, o uso de crowdsourcing é uma alternativa para garantir uma digitalização livre de erros.
3.2 BIBLIOTECAS OCR
Há uma série de soluções de OCR disponíveis para converter imagem em texto. O site www.toptenreviews.com lista os nove melhores softwares comerciais de OCR disponíveis atualmente1. Os softwares OCR foram avaliadas seguindo os seguintes critérios:
Desempenho: em um software OCR, o desempenho é fundamental. Um programa pode ter uma série de características, mas deve converter imagens em texto, pesquisável, preciso, e em um formato que seja útil;
Conjunto de recursos: as características que cada software de OCR fornece devem ser analisadas de acordo com as necessidades de cada projeto. Quanto mais recursos um software possuir, maiores são as chances de ele se adequar ao projeto;
Facilidade de uso: os softwares de OCR foram desenvolvidos para acelerar o processo de digitalização, isso significa que o software tem que levar menos tempo e ser mais fácil de usar do que digitar o documento digitalizado manualmente;
Ajuda e suporte: um dos grandes benefícios de softwares comerciais é o suporte ao usuário. Isso vai desde dúvidas, tutoriais e até suporte técnico.
O site http://www.linux-mag.com lista as opções open source de bibliotecas OCR disponíveis para o sistema operacional Linux2. Apesar da extensa lista de softwares OCR open source disponíveis, este site destaca as seguintes ferramentas:
Tesseract; OCROpus;
1 http://ocr-software-review.toptenreviews.com/ 2 http://www.linux-mag.com/id/5320/
GNU Ocrad; GOCR.
Para fazer um comparativo entre esses softwares open source, realizou-se uma extensa pesquisa em diversos artigos, revistas, trabalhos acadêmicos e periódicos on-line, no entanto a comparação mais satisfatória encontrada foi feita por Peter Selinger em 2007. Selinger (2007) fez uma comparação entre os softwares Tesseract, Ocrad e GOCR.
Essa comparação foi feita utilizando dois documentos digitalizados, sendo que, cada um originou uma imagem que posteriormente sofreu a aplicação de dois tipos diferentes de conversão em tons de cinza (thresholding), resultando em duas imagens bitonais3. A intenção da aplicação do método de thresholding, foi produzir uma imagem mais clara, possibilitando um melhor reconhecimento dos caracteres.
Os testes foram realizados utilizando basicamente três critérios: percentual de palavras não reconhecidas ou traduzidas incorretamente, percentual de caracteres errados e o tempo de execução que cada software levou para concluir a digitalização. A Tabela 2 lista o percentual de palavras não reconhecidas ou traduzidas incorretamente em cada um dos softwares avaliados.
TABELA 2 – Percentual de palavras erradas
Imagens Ocrad GOCR Tesseract
Imagem 1 (original) 20.00% 29.84% 93.33%
Imagem 1 (naive bitonal) 22.85% 28.25% 6.66%
Imagem 1 (custom bitonal) 26.98% 26.98% 6.34%
Imagem 2 (original) 37.97% 55.27% 89.72%
Imagem 2 (naive bitonal) 30.00% 49.45% 0.67%
Imagem 2 (custom bitonal) 22.70% 47.29% 0.40% Fonte: Adaptada de SELINGER, 2007.
Na Tabela 3 é possível visualizar o percentual de caracteres que não foram reconhecidos, ou foram traduzidos incorretamente, pelos softwares de OCR.
TABELA 3 – Percentual de caracteres errados
3 Imagens bitonais são imagens possuem apenas uma cor de primeiro plano e uma cor de fundo. Fonte: Adaptada de SELINGER, 2007.
Imagens Ocrad GOCR Tesseract
Imagem 1 (original) 5.32% 6.96% 75.14%
Imagem 1 (naive bitonal) 5.49% 6.73% 1.75%
Imagem 1 (custom bitonal) 5.71% 8.15% 1.47%
Imagem 2 (original) 12.57% 26.62% 73.57%
Imagem 2 (naive bitonal) 8.37% 22.58% 0.22%
Por fim na Tabela 4 é possível observar o tempo de execução, em segundos, que cada software levou para concluir a digitalização.
TABELA 4 – Tempo de execução
Imagens Ocrad GOCR Tesseract
Imagem 1 (original) 17.36 66.78 21.00
Imagem 1 (naive bitonal) 4.76 46.68 18.11
Imagem 1 (custom bitonal) 4.14 61.80 14.37
Imagem 2 (original) 15.69 149.73 44.15
Imagem 2 (naive bitonal) 5.67 126.35 27.34
Imagem 2 (custom bitonal) 4.77 224.52 25.42 Fonte: Adaptada de SELINGER, 2007.
Selinger (2007) chegou à conclusão de que em termos de precisão, nos testes em que foram utilizadas imagens bitonais, o Tesseract supera, com uma larga diferença, tanto o Ocrad quanto o GOCR. No entanto, para imagens não bitonais, o uso do Tesseract se mostrou inadequado. O Ocrad e o GOCR tiveram resultados semelhantes, incluindo a dificuldade para reconhecer caracteres em itálico. Já em termos de tempo de execução Peter identificou que o Ocrad obteve o melhor desempenho, seguido pelo Tesseract, e por último o GOCR.
Selinger (2007) ressalta que os resultados dos testes são relativos, e podem mudar de acordo com o documento digitalizado. Por fim ele conclui que o Tesseract se saiu melhor nos testes e foi eleito o vencedor, onde a única ressalva é que deve-se utilizar imagens bitonais para um resultado satisfatório. O Ocrad pode ser útil para aplicações onde a velocidade é mais importante que o resultado. Já os testes realizados com o GOCR, resultaram em uma precisão pobre, além de um alto tempo de execução, tornado o uso desse software inviável se comparado aos outros dois.
A fim de comprovar a viabilidade e a funcionalidade dos softwares OCR listados, foram realizados alguns testes apresentados nas próximas seções. Todos os testes foram realizados utilizando os mesmos fragmentos de um documento a fim de comparar qual o software mais adequado para a aplicação proposta nesse trabalho.
3.2.1 Testes realizados no software Tesseract-OCR
O Tesseract é uma biblioteca OCR codificada em linguagem de programação C/C++ e desenvolvido pela HP (Hewlett-Packard) entre 1984 e 1994. Esse foi desenvolvido com um projeto de pesquisa nos laboratórios da HP e ganhou importância como um possível software ou hardware adicional para a linha de scanners de mesa da HP. Sua principal motivação era dada pelo fato de que na época os sistemas de OCR ainda eram imprecisos e falhavam quando