APLICATIVO MÓVEL PARA GESTÃO DE …monografias.poli.ufrj.br/monografias/monopoli10016608.pdf ·...

57
APLICATIVO MÓVEL PARA GESTÃO DE BIBLIOTECAS PESSOAIS Evana Cristina Carvalho dos Santos Projeto de Graduação apresentado ao Curso de Engenharia de Computação e Informação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheira. Orientador: Jano Moreira de Souza Rio de Janeiro Abril de 2016

Transcript of APLICATIVO MÓVEL PARA GESTÃO DE …monografias.poli.ufrj.br/monografias/monopoli10016608.pdf ·...

APLICATIVO MÓVEL PARA GESTÃO DE BIBLIOTECAS PESSOAIS

Evana Cristina Carvalho dos Santos

Projeto de Graduação apresentado ao Curso de

Engenharia de Computação e Informação da

Escola Politécnica, Universidade Federal do

Rio de Janeiro, como parte dos requisitos

necessários à obtenção do título de Engenheira.

Orientador: Jano Moreira de Souza

Rio de Janeiro

Abril de 2016

ii

APLICATIVO MÓVEL PARA GESTÃO DE BIBLIOTECAS

PESSOAIS

Evana Cristina Carvalho dos Santos

PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO

DE ENGENHARIA DE COMPUTAÇÃO E INFORMAÇÃO DA ESCOLA

POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO

PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU

DE ENGENHEIRA DE COMPUTAÇÃO E INFORMAÇÃO.

Examinada por:

Prof. Jano Moreira de Souza, Ph.D.

Prof. Claudio Esperança, Ph.D.

Prof. Sergio Palma da Justa Medeiros, D.Sc.

.

RIO DE JANEIRO, RJ - BRASIL

ABRIL de 2016

iii

Santos, Evana Cristina Carvalho dos

Aplicativo Móvel para Gestão de Bibliotecas Pessoais /

Evana Cristina Carvalho dos Santos. – Rio de Janeiro:

UFRJ/ Escola Politécnica, 2016.

VII, 50 p.: il.; 29,7 cm.

Orientador: Jano Moreira de Souza

Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso

de Engenharia de Computação e Informação, 2016.

Referencias Bibliográficas: p. 49-50.

1. Reconhecimento Ótico de Caracteres 2. Processamento

de Imagens 3. Aplicativo 4. Gestão de Bibliotecas Pessoais

I. Souza, Jano Moreira de. II. Universidade Federal do Rio de

Janeiro, Escola Politécnica, Curso de Engenharia de

Computação e Informação. III. Título

iv

DEDICATÓRIA

À minha mãe.

v

AGRADECIMENTOS

Primeiramente, agradeco à minha mãe, meu exemplo de vida e superação, pelo seu

amor, apoio e compreensão nos momentos mais desafiadores ao longo de toda a minha

vida, mas principalmente por acreditar em mim. À minha família, pelo seu carinho,

paciência e incentivo. Aos meus amigos, por não me abandonarem, mesmo com as

minhas ausências. Em especial, aos amigos de ECI, pelas melhores memórias desses

seis anos, tendo enfrentado juntos as dificuldades e por terem me ensinado muito.

Agradeço a todos os meus professores por contribuirem para a minha formação,

transmitindo os seus conhecimentos, e, especialmente, ao professor Jano Moreira de

Souza, por aceitar orientar este projeto, ao professor Ricardo Marroquim, por sua

disposição em contribuir com este trabalho e aos professores Claudio Esperança e

Sergio Palma, por participarem da banca.

Por fim, gostaria de agradecer a todos que participaram e contribuíram, mesmo que

indiretamente, para me tornar a pessoa que sou hoje.

vi

Resumo do Projeto de Graduação apresentado à Escola Politécnica/ UFRJ como

parte dos requisitos necessários para a obtenção do grau de Engenheira de

Computação e Informação.

Aplicativo Móvel para Gestão de Bibliotecas Pessoais

Evana Cristina Carvalho dos Santos

Abril/2016

Orientador: Jano Moreira de Souza

Curso: Engenharia de Computação e Informação

Devido ao crescimento no número de visitantes e vendas em feiras de livros como a

Bienal do Livro no Rio é cada vez mais difícil para os indivíduos controlarem quais

livros possuem, o que algumas vezes causa livros duplicados. Fica ainda mais difícil,

quando se tem várias camadas de livros na mesma prateleira porque as obras que estão

por trás são raramente manuseadas. Além disso, não é fácil encontrar o livro buscado

numa situação como a descrita acima devido ao fato de não se saber previamente em

qual prateleira está e, consequentemente, ser necessário buscar em todas até localizá-lo,

gerando um grande desperdício de tempo e esforço na reorganização. No entanto, com a

difusão dos celulares e do acesso a internet, surgem novas possibilidades como o

desenvolvimento de uma aplicação com o objetivo de auxiliar o gerenciamento de

coleções de livros com foco em facilitar a carga inicial de dados através de

Reconhecimento Ótico de Caracteres.

Palavras-chave: Software Web, Reconhecimento Ótico de Caracteres, Processamento

de Imagens, Gestão de Bibliotecas Pessoais.

vii

Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment

of the requirements for the degree of Engineer.

Mobile Application for Personal Libraries Management

Evana Cristina Carvalho dos Santos

April/2016

Advisor: Jano Moreira de Souza

Course: Computing and Information Engineering

Due to the increasing number of visitors and sales in fairs like the Bienal do Livro in

Rio it is getting harder for individuals keep track of which books they own, what

causes doubled books sometimes. It gets even harder, when there are multiple layers

of books on the same shelf because the ones behind are rarely handled. Futhermore, it

is not easy to find certain book in a situation like the described above due to the fact

that it is not previously known in which shelf it is and, consequently, it is necessary to

search them all until finding it, generating a big waste of time and effort in the

reorganization. However, with the spread of smartphones and Internet access, new

possibilities arise like the development of an application with the aim of supporting

the management of book collections focused in facilitating the initial data-load

process through Optical Character Recognition.

Keywords: Software Web, Optical Character Recognition, Image Processing, Personal

Library Management.

1

Sumário

1. Introdução ............................................................................................................................................ 2

2. Trabalhos Relacionados ....................................................................................................................... 4

1. ShelvAR .......................................................................................................................................... 4

2. Book Crawler .................................................................................................................................. 4

3. My Book List .................................................................................................................................. 4

4. Bibliophilia ...................................................................................................................................... 5

5. BookBuddy ..................................................................................................................................... 5

3. Conceitos ............................................................................................................................................. 6

1. ISBN ................................................................................................................................................ 6

2. API .................................................................................................................................................. 6

3. REST ............................................................................................................................................... 6

4. SOAP............................................................................................................................................... 7

5. XML ................................................................................................................................................ 7

6. JSON ............................................................................................................................................... 7

7. Product Advertising API ................................................................................................................. 7

8. Biblioteca do Congresso Americano ............................................................................................. 10

9. Google Books ................................................................................................................................ 11

4. Arquitetura ......................................................................................................................................... 13

1. Plataforma Android ....................................................................................................................... 13

2. Estrutura de Dados ........................................................................................................................ 14

3. Casos de Uso ................................................................................................................................. 16

5. Reconhecimento Ótico de Caracteres ................................................................................................ 22

1. Processamento da Imagem ............................................................................................................ 23

2. Resultados ..................................................................................................................................... 30

6. Repositórios ....................................................................................................................................... 33

1. Amazon ......................................................................................................................................... 34

2. Biblioteca do Congresso Americano ............................................................................................. 39

3. Google books................................................................................................................................. 43

7. Conclusão .......................................................................................................................................... 47

2

1. Introdução

A manutenção do catálogo de livros de um indivíduo pode ser uma tarefa complexa

para ele. Além disso, com a internet e a facilidade de ler livros online em qualquer

dispositivo, é comum para pessoas que gostam de ler se depararem com a dúvida se já

possuem determinada obra, principalmente em feiras como a Bienal. Fica ainda mais

dificil, quando se tem várias camadas de livros na mesma prateleira porque os que estão

por trás acabam sendo manuseados raramente.

Numa situação como a descrita, não é fácil encontrar certo livro devido ao fato de não

se saber a priori em qual prateleira ele está e, por conseguinte, ser necessário buscar em

todas até localizá-lo, gerando um grande desperdício de tempo e esforço por ter que

recolocar tudo no lugar após a busca.

Bancos de dados aparentam ser uma boa solução para este problema, porém são de

difícil utilização para leigos e não são portáteis. Além disso, digitar título e autor, pelo

menos, de uma grande quantidade de livros é uma tarefa extremamente cansativa e,

devido a isso, desencorajadora.

O uso de planilhas, como as do Microsoft Excel, é uma alternativa de maior facilidade

para pessoas em geral e portátil, visto que a maioria dos celulares atuais possui diversas

opções de aplicativos para criar e editar planilhas que, normalmente, fazem backup

automático para algum serviço de nuvem. No entanto, o problema da carga inicial de

dados persiste. Ademais, planilhas não são escaláveis, ou seja, a medida que a

quantidade de dados aumenta, o desempenho é prejudicado e softwares, como o

Microsoft Excel, possuem limites fixos para o tamanho de planilhas.

A proposta deste projeto é resolver os problemas citados acima usando um aplicativo

móvel para apoio à gestão de coleções pessoais. A solução utiliza um banco de dados

construído de forma incremental para armazenar os dados de livros e prateleiras da

3

coleção do usuário. Embora, bancos de dados não pareçam ser a melhor dentre as

opções citadas, eles podem ser mais facilmente integrados a aplicativos, abstraindo as

questões computacionais, agilizando pesquisas e resolvendo assim os problemas de falta

de conhecimento técnico e portabilidade. E, para resolver a questão da carga inicial de

dados, é proposto o uso da câmera do celular para fotografar as prateleiras, fazer o

reconhecimento dos títulos nas lombadas dos livros através de Reconhecimento Ótico

de Caracteres (Optical Character Recognition ou OCR) e buscar os dados relevantes

dos livros a partir de repositórios como a Biblioteca do Congresso Americano, Google

Books e Amazon.

O objetivo deste trabalho é mostrar como foi desenvolvido tal projeto. Esta monografia

está dividida em 6 capítulos, além desta introdução. O capítulo 2 descreve algumas

soluções existentes para alguns dos problemas apresentados. Os conceitos fundamentais

para o total entendimento do trabalho são apresentados no capítulo 3. A arquitetura

utilizada no projeto é explicada no capítulo 4. O capítulo 5 aborda o Reconhecimento

Ótico de Caracteres e seus resultados. Os repositórios usados para obtenção das

informações dos livros são mostrados no capítulo 6. E, por último, o capítulo 7 conclui

o trabalho.

4

2. Trabalhos Relacionados

As aplicações descritas neste capítulo referem-se a outras soluções que apoiam a

gerência de coleções de objetos reais, especificamente livros, e que visam facilitar a sua

localização. Embora algumas das abordagens sejam diferentes da seguida neste

trabalho, as soluções mencionadas neste capítulo e a proposta neste trabalho tem alguns

objetivos em comum.

1. ShelvAR

É um aplicativo desenvolvido por um grupo de pesquisa em realidade aumentada da

Universidade de Miami focado no auxílio da reposição de livros em estantes em

bibliotecas, segundo [1]. Ele utiliza a camera do aparelho para indicar os livros fora de

lugar através de realidade aumentada e etiquetas com códigos previamente colocadas

nas lombadas dos livros.

2. Book Crawler

Como explicado em [2], este aplicativo facilita o cadastro utilizando a camera do

dispositivo para reconhecer o ISBN através do código de barras da obra, buscando as

informações relevantes e permitindo ao usuário editá-las. Ele também permite marcar

livros como lidos ou emprestados, funcionalidades que também fazem parte da solução

proposta neste trabalho. Além disso, ele mostra a disponibilidade de determinada obra

em bibliotecas locais e avaliações de livros.

3. My Book List

É outro aplicativo que permite escanear o código de barras do livro com a camera e

retorna os dados encontrados através do ISBN escaneado de repositórios como a

Amazon, de acordo com [3]. Além disso, ele permite a captura da capa do livro para

5

visualização numa estante virtual dentro da aplicação, compra de livros e

compartilhamento dos dados.

4. Bibliophilia

Em [4], é descrito que esta aplicação facilita o cadastro dos livros através do

escaneamento do código de barras e a busca das principais informações através do

ISBN de repositórios como o Google Books. Ele permite também a importação de

múltiplos livros de um arquivo .csv e backup e restauração direto da nuvem através da

sincronização com Dropbox e Google Drive.

5. BookBuddy

Este aplicativo permite o escaneamento do ISBN e a importação livros do Google

Books, GoodReads e LibraryThing, dentre outros, para facilitar a catalogação. Ademais,

ele suporta o compartilhamento de livros em redes sociais, marcação de livros como

emprestados e sincronização com o Dropbox.

Dentre as aplicações citadas, o Shelvar é a única que não permite o escaneamento do

ISBN por utilizar suas próprias etiquetas, sendo essa uma de suas fraquezas por obrigar

o usuário a etiquetar e associar códigos a todos os livros e a largura de certos livros

dificultar a marcação. Apesar disso, elas o permitem identificar rapidamente livros fora

do lugar. Os outros aplicativos, focam na facilitação da carga inicial de dados através do

escaneamento do código de barras para obtenção dos dados através do ISBN. No

entanto, isso não resolve completamente o problema porque o usuário ainda precisa

retirar o livro da prateleira para escaneá-lo, enquanto a solução proposta neste trabalho

só necessita que os livros sejam removidos caso existam mais livros atrás.

6

3. Conceitos

Neste capítulo serão explicados conceitos relacionados ao domínio e às tecnologias

utilizadas que serão cruciais para o entendimento do trabalho.

1. ISBN

Segundo [5], ISBN é o acrônimo para International Standard Book Number, um padrão

internacional de código identificador único para cada livro criado em 1967. Como pode

ser visto na Figura 1, ele é composto por partes referentes ao país, a editora e o título,

dentre outros, e passou a ter 13 dígitos em 2007.

Figura 1: Formação do ISBN. Fonte: [5].

2. API

Interface de Programação de Aplicação (Application Programming Interface) ou API

são padrões de comunicação criados por um software para que outros softwares

consigam acessá-lo de forma automatizada e usar os seus serviços. Elas podem ser

REST e SOAP.

3. REST

Em [6], é explicado que REST é o acrônimo para Representational State Transfer e é

um tipo de arquitetura que utiliza URLs com os parâmetros no formato de pares chave-

valor para a requisição ao servidor (ou request como será referido daqui em diante) e o

protocolo HTTP para comunicação. Devido ao fato de usar uma URL, ele não pode

7

conter espaços que precisam ser codificados como ‘%20’ já que ao ser encontrado um

espaço o request é considerado terminado.

4. SOAP

Simple Object Access Protocol ou SOAP que é um outro tipo de arquitetura que utiliza

uma estrutura XML chamada envelope SOAP, onde os parâmetros são inseridos,

também é descrito em [6]. Embora REST seja mais simples, SOAP suporta outros tipos

de comunicação como, por exemplo, SSH, que é uma das razões pelas quais é mais

robusto.

5. XML

XML é a sigla para eXtensible Markup Language que é uma linguagem de marcação

recomendada pela World Wide Web Consortium (ou W3C) uma das organizações

responsáveis pela padronização da Web.

6. JSON

JSON ou JavaScript Object Notation é um formato de troca de dados baseado em pares

chave-valor para estruturas de dados arbitrarias.

7. Product Advertising API

A Amazon possui a Product Advertising API que disponibiliza a maioria das

funcionalidades de seu site, como buscar características de produtos que será usada

neste trabalho. Esta API é completamente explicada em [7] e aqui só serão introduzidos

os termos que serão usados neste trabalho. Serão utilizados REST requests, mas essa

API também suporta SOAP e retorna respostas estruturadas de acordo com o

responseGroup escolhido no formato XML. A seguir, são explicados os conceitos dessa

API que serão utilizados.

8

Operation

Como o próprio nome sugere, é o tipo de operação ou request que se deseja realizar.

Existem três tipos de operações Search, Lookup e Cart. Neste projeto serão utilizados

apenas o Search e o Lookup. O primeiro possui apenas um subtipo que é o ItemSearch,

enquanto o segundo possui três, são eles: BrowseNodeLookup, ItemLookup e

SimilarityLookup. Destes, apenas o ItemLookup será usado.

ItemSearch

Esta operação busca itens na Amazon em uma determinada categoria de produtos

(SearchIndex) e um valor a ser buscado e retorna até 10 itens por página. Um exemplo

típico de request deste tipo de operação com livros é ilustrado na Figura 2.

http://webservices.amazon.com/onca/xml?

Service=AWSECommerceService&

AWSAccessKeyId=[AWS Access Key ID]&

AssociateTag=[Associate ID]&

Operation=ItemSearch&

Keywords=[keywords%20separated%20by%20encoded%20spaces]&

SearchIndex=Books

&Timestamp=[YYYY-MM-DDThh:mm:ssZ]

&Signature=[Request Signature]

Figura 2: Formato de request com operação ItemSearch. Adaptado de: [7].

ItemLookup

Esta operação busca itens na Amazon através de um identificador e fornece, por padrão,

os atributos ASIN, Manufacturer, ProductGroup, e Title. Porém, como esse conjunto de

atributos não inclui todos os que eu necessito, especifiquei o ResponseGroup como

ItemAttributes para retornar todos os atributos de cada item encontrado. Na Figura 3, é

mostrado um exemplo típico de request deste tipo de operação com livros.

9

http://webservices.amazon.com/onca/xml?

Service=AWSECommerceService&

AWSAccessKeyId=[AWS Access Key ID]&

AssociateTag=[Associate ID]&

Operation=ItemLookup&

ItemId=[id]&

SearchIndex=Books&

IdType=ISBN&

ResponseGroup=ItemAttributes

&Timestamp=[YYYY-MM-DDThh:mm:ssZ]

&Signature=[Request Signature]

Figura 3: Formato de request com operação ItemLookup. Adaptado de: [7].

Service

É o serviço a ser usado e seu valor é sempre AWSECommerceService independente do

tipo de operação ou local.

AWSAccessKeyId

É o identificador de acesso a API do desenvolvedor cadastrado.

AssociateTag

A Product Advertising API é parte do Amazon Associates que permite que indivíduos

vendam produtos da Amazon em seus próprios sites e recebam por isso. Essa tag é o

que permite a Amazon identificar a origem do request e pagar ao desenvolvedor pelas

compras efetuadas através do seu site.

ResponseGroup

Definem os atributos do item buscado a serem retornados, chamados ItemAttributes.

Para livros, os principais atributos são título(Title), autor(Author) e ISBN, mas existem

muitos outros que não mencionarei porque não são o foco do presente trabalho.

Keywords

São uma ou mais palavras que se deseja buscar. Em termos de livros, pode ser título ou

autor, por exemplo.

10

IdType

Quando se busca um item específico com o ItemLookup, é bom especificar o tipo de

identificador usado para acelerar a pesquisa. O IdType é exatamente para isso e neste

trabalho vai sempre ter o valor de ISBN.

ItemId

O código identificador do item a ser procurado.

Timestamp

Contém a data e hora completa do request de acordo com o Greenwich Mean Time ou

GMT e é utilizado para autenticação.

Signature

É a assinatura usada para autenticação. Ela é criada a partir do tipo do request, da URI e

de um conjunto ordenado dos parâmetros utilizados com uma chave secreta fornecida

pela Amazon para cada desenvolvedor junto com o AWSAccessKeyId.

8. Biblioteca do Congresso Americano

A Biblioteca do Congresso Americano utiliza o protocolo Search/Retrieve via URL ou

SRU que é um padrão baseado em Web Services para buscas que retorna respostas no

formato XML com uma estrutura determinado pelo recordSchema que seria o

equivalente ao responseGroup da Product Advertising API. Em [8], encontra-se uma

descrição mais completa de seus termos.

Operation

Como na Product Advertising API da Amazon, os requests a API da Biblioteca do

Congresso Americano também possuem um parâmetro para designar a operação a ser

realizada. O valor que será usado nesse projeto será o searchRetrieve que serve tanto

para a busca geral por título, como pela busca individual por ISBN.

11

Version

A versão do protocolo que será usada.

MaximumRecords

É o número limite de registros a serem enviado na resposta.

RecordSchema

O SRU suporta diversos formatos para transferência dos dados, dentre eles o dc (Dublin

Core Record Schema) e o mods (Metadata Object Description Schema) que serão

utilizados neste projeto. Na Figura 4, encontra-se um exemplo típico do uso de cada um.

http://lx2.loc.gov:210/lcdb?

version=1.1&

operation=searchRetrieve&

query=title%20separated%20by%20encoded%20spaces&

maximumRecords=10&

recordSchema=dc

http://lx2.loc.gov:210/lcdb?

version=1.1&

operation=searchRetrieve&

query=bath.isbn=ISBN&

maximumRecords=1&

recordSchema=mods

Figura 4: Exemplos de requests usando recordSchemas dc e mods. Adpatado de: [8].

9. Google Books

Como as APIs apresentadas previamente, a Google Books API permite a utilização de

algumas das funcionalidades disponíveis no site Google Books de forma automatizada.

No entanto, diferentemente das anteriores, ela retorna respostas em formato JSON e

permite a utilização de REST através de JavaScript. Esta API suporta cinco tipos de

operações: list, insert, update, delete e get, dos quais apenas o útlimo será utilizado.

Volume

Representa um livro ou revista e é o recurso principal da API, sendo todos os outros

conectados a ele.

12

Figura 5: Exemplos de requests com titulo e ISBN. Adptado de: [9]

Como pode ser constatado nos exemplos de requests na Figura 5, esta API não possui

diferentes conjuntos de informações para resposta e os espaços são codificados com o

síbolo “+” em vez de “%20”. Além disso, a letra “q” é utilizada para indicar os

parâmetros da busca. Ela pode ser utilizada diretamente com uma palavra chave como

em “q=cooking” ou com filtros como intitle para título e isbn para o ISBN, como é

demonstrado em [9].

GET

https://www.googleapis.com/books/v1/volumes?

q=intitle:title+separated+by+encoded+spaces

GET

https://www.googleapis.com/books/v1/volumes?

q=isbn:ISBN

13

4. Arquitetura

Neste capítulo será explicada a arquitetura da solução proposta e as tecnologias

utilizadas, bem como as suas funcionalidades.

1. Plataforma Android

Como o Android é o sistema operacional móvel mais vendido no mundo e continuou

aumentando sua porcentagem do mercado em 2014, como visto na Tabela 1, ele foi

escolhido como plataforma de desenvolvimento. Além disso, diferentemente do iOS, ele

permite o desenvolvimento de aplicativos de forma gratuita.

Tabela 1: Vendas Mundiais de Celulares para Usuários Finais por Sistema Operacional

em 2014 (Milhares de Unidades). Adaptado de: [10].

Sistema Operacional

2014

Unidades

2014 Quota de

Mercado(%)

2013

Unidades

2013 Quota de

Mercado(%)

Android 1.004,675 80.7 761,288 78.5

iOS 191,426 15.4 150,786 15.5

Windows 35,133 2.8 30,714 3.2

BlackBerry 7,911 0.6 18,606 1.9

Other OS 5,745 0.5 8,327 0.9

Total 1,244,890 100.0 969,721 100.0

Embora o Android ofereça uma opção de Banco de Dados no próprio aparelho, o

SQLite, foi dado preferência a utilização do Postgres através de um web-service

utilizando SOAP para a comunicação cliente-servidor. Pode-se argumentar que essa

estrutura tem um custo alto por depender da internet para a transmissão dos dados, no

entanto, dado que a maior demanda de conexão será durante a carga inicial e o usuário

14

estará em casa, ele pode utilizar a rede wi-fi de sua residência sem sobrecarregar seus

dados móveis.

2. Estrutura de Dados

O aplicativo utiliza três entidades: usuário, prateleira e livro que podem ser vistas na

Figura 6 e o dicionário de dados é apresentado na Tabela 2. O usuário se cadastra no

sistema fornecendo um nome, pelo qual ele será identificado enquanto logado, um email

e uma senha, sendo os dois últimos os dados necessários para fazer login. Só é possível

começar a cadastrar livros após a criação de pelo menos uma prateleira, pois os livros

são associados a elas, como pode ser observado na Figura 7.

Figura 6: Modelo Conceitual utilizado.

Figura 7: Modelo Lógico utilizado.

Tabela 2: Dicionário de dados utilizado.

User

idUser Código identificador do usuário

username Nome do usuário

password Senha do usuário usada para o acesso ao aplicativo

email Email do usuário usado para o acesso ao aplicativo

Bookshelf

idBookshelf Código identificador da prateleira

shelf Nome da prateleira

Prateleira possui

armazena

Usuário Livro

15

column Coluna da prateleira

line Linha da prateleira

layer Camada da prateleira

amount Quantidade de livros na prateleira

idUser Código identificador do usuário. Representa a qual usuário

pertence a prateleira

Book

idBook Código identificador do livro

title Título do livro

author Autor do livro

isbn Código ISBN do livro

publisher Editora do livro

edition Edição do livro

dateRead Data da leitura do livro

dateLoaned Data do empréstimo do livro

personLoaned Pessoa para qual o livro foi emprestado

position Posição do livro na prateleira

idBookshelf Código identificador da prateleira. Representa em qual

prateleira está o livro

Após logar, o usuário pode então cadastrar prateleiras especificando estante, coluna,

linha e camada. Para entender melhor o que cada um desses atributos representa, basta

ver a Figura 8.

Figura 8: Organização de uma prateleira usada pelo sistema.

16

3. Casos de Uso

Nesta seção serão abordadas todas as funcionalidades do aplicativo através da descrição

textual dos seus casos de uso e serão incluídas as descrições detalhadas em tabela dos

dois casos de uso mais importantes e complexos.

Como visto na Figura 7, para cadastrar um livro é preciso ter alguma prateleira

cadastrada que por sua vez precisa de um usuário cadastrado e logado. Para cadastrar

um usuário novo, é só abrir o aplicativo pela primeira vez, onde será exibida a tela de

login, preencher o email e clicar em Entrar ou Cadastrar-se. O aplicativo exibirá a tela

de Cadastro já com o email preenchido, o usuário informará um nome de usuário e

senha e ao clicar em Salvar será exibida a mensagem “Usuário cadastrado com sucesso”

e ele será redirecionado a tela de login.

Depois de cadastrado o usuário, ao fornecer email e senha e clicar em Entrar ou

Cadastrar-se, o sistema exibe a tela principal com a aba Prateleiras selecionada, como é

ilustrado na Figura 9. Para sair ou ver as informações do usuário logado, é só clicar nos

três pontinhos na barra de título e escolher Sair ou Minha conta, respectivamente.

Quanto às prateleiras, o usuário pode adicionar uma nova, listar as cadastradas e editar

ou remover uma prateleira do sistema sempre com a aba Prateleiras selecionada na tela

principal. Para adicionar, ele deve clicar em Adicionar, preencher os dados e clicar em

Salvar. Enquanto que para modificar ou excluir é preciso listá-las através do botão

Listar e clicar no botão Editar ou Apagar, respectivamente.

17

Figura 9: Tela principal do aplicativo.

Por serem os casos de uso mais complexos do sistemas, Reconhecer títulos e Escanear

ISBN estão explicados detalhadamente nas Tabelas 3 e 4, nesta ordem.

Tabela 3: Descrição do caso de uso Reconhecer títulos.

Reconhecer títulos

Inicio Usuário clica em “Fotografar” na aba

“Prateleiras”

Funcionalidades Envolvidas Reconhecer títulos nas lombadas dos

livros

Condições

Invariante

Pré-condições Usuário deve estar logado no sistema

Pós-condições

Interações

Fluxo Principal

Usuário Sistema

18

1. Usuário clica em “Fotografar” na aba

“Prateleiras”

2. Sistema exibe tela “Fotografar”

3. Usuário seleciona a prateleira desejada e a

língua dos livros a serem fotografados

4. Usuário clica em “Fotografar”

5. Sistema exibe a câmera padrão do

Android

6. Usuário tira a foto

7.Sistema exibe a foto capturada

8. Usuário confirma o uso da foto exibida [A1]

9.Sistema processa a imagem e

reconhece os títulos

10. Sistema exibe a tela “Buscar”

com os títulos reconhecidos

11. Usuário escolhe a base

12. Usuário clica na lupa ao lado de um título

[A2]

13. Sistema exibe modal com

primeiro registro [A3]

14. Usuário clica em “Salvar [A4] [A5]

15. Sistema exibe a tela Manter

Livro com as informações do modal

16. Usuário clica em “Salvar” [A6]

17. Sistema exibe a mensagem

“Livro salvo com sucesso”

18. Sistema volta para a tela

“Buscar”

19. Caso de uso é encerrado [A7]

Fluxo Alternativo

[A1] Usuário tira outra foto

Volta para o passo 8

19

[A2] Usuário adiciona um título

Volta para o passo 12

[A3] Sistema exibe mensagem

“Nenhum resultado encontrado.

Tente selecionar outra base para

pesquisa.”

Volta para o passo 11

[A4] Usuário navega entre os registros no

modal

Volta para o passo 14

[A5] Usuário fecha o modal por não ter o livro

procurado

Volta para o passo 11

[A6] Usuário edita alguma informação do

livro

Volta para o passo 16

[A7] Volta para o passo 12

Com relação aos livros, também é possível cadastrá-los manualmente e através do

escaneamento do ISBN com a câmera, além do reconhecimento dos títulos explicado

acima. Para cadastrar manualmente, basta clicar em Adicionar com a aba Livros

selecionada, preencher os campos marcados com o símbolo asterístico (*), escolher a

prateleira e clicar em Salvar. Enquanto que para escanear, o procedimento está descrito

na Tabela 4, como dito anteriormente.

Tabela 4: Descrição do caso de uso Reconhecer títulos.

Escanear ISBN

Inicio Usuário clica em “Escanear” na aba

“Livros”

Funcionalidades Envolvidas Adicionar livro a partir do ISBN

Condições

20

Invariante

Pré-condições Usuário deve estar logado no sistema

Pós-condições

Interações

Fluxo Principal

Usuário Sistema

1. Usuário clica em “Escanear” na aba

“Livros”

2. Sistema exibe uma câmera personalizada

3. Usuário alinha código de barras

4. Sistema reconhece ISBN

5. Sistema exibe tela “Buscar” com o ISBN

reconhecido

6. Usuário escolhe a base

7. Usuário clica na lupa

8. Sistema exibe modal com a resposta [A1]

9. Usuário clica em “Salvar [A2]

10. Sistema exibe a tela Manter Livro com

as informações do modal

11. Usuário clica em “Salvar” [A3]

12. Sistema exibe a mensagem “Livro salvo

com sucesso”

13. Sistema volta para a tela principal

14. Caso de uso é encerrado

Fluxo Alternativo

[A1] Sistema exibe mensagem “Nenhum

resultado encontrado. Tente selecionar outra

base para pesquisa.”

Volta para o passo 6

[A2] Usuário fecha o modal por não ter

o livro procurado

21

Volta para o passo 6

[A3] Usuário edita alguma informação

do livro

Volta para o passo 11

Por fim, com a aba Livros selecionada, também é possível listar todos os livros

cadastrados no sistema e editar ou remover algum. Além disso, existe a opção de buscar

livros específicos através do título, autor ou ISBN. Para modificar ou excluir é preciso

listar os livros através do botão Listar e clicar no botão Editar ou Apagar,

respectivamente. Enquanto que, para buscar, o usuário deve clicar na lupa no topo da

tela principal, digitar o termo a ser pesquisado e pressionar Enter.

22

5. Reconhecimento Ótico de Caracteres

Reconhecimento Ótico de Caracteres é uma tecnologia que transforma texto impresso

ou manuscrito em imagens e arquivos de texto escaneados em um conjunto de

caracteres editável em alguma codificação interpretável pelo computador de forma

similar ao que uma pessoa faz ao ler.

Segundo [11], o desenvolvimento do OCR começou por volta de 1950, mas era muito

lento e só conseguia escanear uma linha de cada vez. Com a invenção do scanner de

mesa e outros avanços de hardware, tornou-se possível digitalizar uma página inteira

por vez e vários tipos de documentos. Além disso, a velocidade do reconhecimento

aumentou, diminuindo o custo da tecnologia.

Embora os algoritmos de reconhecimento e os computadores não tivessem uma

performance muito boa, durante os anos de 1960, os desenvolvimentos de pesquisas em

softwares de OCR também avançaram bastante. No entanto, ele ainda era muito

suscetível a erros de acordo com a qualidade da digitalização e, devido a isso, empresas

fabricantes de software OCR forçaram a padronização de fontes, tintas e outros aspectos

que podiam influenciar a qualidade do reconhecimento. Com a padronização, a

eficiência do OCR melhorou bastante, bem como a sua velocidade, o que diminuiu mais

ainda o seu custo.

Existem diversas opções de softwares que fazem reconhecimento ótico de caracteres,

sendo a maioria deles proprietários, como ABBYY Cloud OCR SDK, OmniPage e

Nicomsoft OCR SDK, por exemplo. Dentre as gratuitas, uma das mais famosas é a

Tesseract que, de acordo com [12], foi inicialmente desenvolvido pela HP com o intuito

de ser acoplada aos seus scanners quando o OCR estava apenas começando e era

extremamente dependente da qualidade da imagem. Ela foi testada no UNLV Annual

Test of OCR Accuracy em 1995 e obteve ótimos resultados como pode ser visto em

23

[13], porém não virou parte de nenhum produto e seu código foi aberto em 2005.

Devido a isso, ela foi escolhida para ser usada no presente projeto.

Esta biblioteca possui como requisitos imagens com 300 dpi e que o texto a ser

reconhecido seja horizontal, como a maioria delas. Em decorrência disso, foi necessário

rotacionar a imagem durante o pré-processamento.

Conforme explicado em [12], a Tesseract funciona da seguinte forma: primeiro, ela

encontra e armazena o contorno das componentes conexas que são organizados em

linhas do texto. Estas linhas serão analizadas de acordo com o espacamento que será

usado em seguida para dividí-las em palavras. Em seguida, o reconhecimento

propriamente dito é feito em duas etapas, na primeira tenta-se reconhecer cada palavra e

as que atigem determinado nível de aceitação são utilizadas no treinamento de um

classificador adaptativo para melhorar o reconhecimento gradativamente. Devido a isso,

tem-se a segunda etapa que consiste numa segunda tentativa de reconhecimento porque

o classificador pode ter aprendido algo no final.

1. Processamento da Imagem

Em busca de tentar melhorar a qualidade do reconhecimento que será visto na próxima

seção e levando em consideração que, do ponto de vista de um livro, o restante da

imagem é ruído, é feito um pré-processamento da imagem visando segmentá-la livro a

livro para submetê-los individualmente ao OCR. Para isso, foi utilizada a biblioteca

OpenCV.

OpenCV é uma biblioteca de visão computacional de código aberto gratuita para uso

acadêmico e comercial focada em eficiência e inicialmente desenvolvida pelo

laboratório de pesquisa da Intel. Ela é multi-plataforma e possui interfaces em várias

linguagens, incluindo Java. Dentre suas diversas aplicações encontram-se remoção de

24

olhos vermelhos de fotos, rastreamento de objetos em movimento e reconhecimento de

faces. Além disso, é utilizada por mais de 40 milhões de usuários, incluindo grandes

empresas como Google, Microsoft e Sony.

Figura 10: Exemplo de foto de prateleira.

Primeiramente, obtém-se um valor para o limite (threshold) usando um método

adaptativo de Otsu. Em segundo lugar, o método Canny(Mat image, Mat edges, double

threshold1, double threshold2) é usado para gerar uma imagem binária (edges) do

mesmo tamanho da entrada (Figura 10) de fundo preto, onde os pixels brancos são as

bordas detectadas como na Figura 11.

25

Figura 11: Retorno no método Canny.

O método Canny, explicado em [14] se baseia no operador de Laplace que usa segundas

derivadas para detectar discontinuidades dado que quando uma função está variando

muito rápido a sua primeira derivada é maior até atingir um máximo local, que se traduz

em uma segunda derivada igual a 0, e depois vai diminuindo. Os pontos onde a segunda

derivada é zero são analisados de acordo com os limites máximo (threshold2) e mínimo

(threshold1) de forma que um pixel só é considerado borda se ele tiver um gradiente

maior que o threshold2 ou se ele está entre threshold1 e threshold2, mas esta ao lado de

um pixel maior que threshold2.

Na sequência, obtenho as linhas verticais (lines) que serão usadas como candidatas para

o corte da imagem posteriormente e são mostradas em azul na Figura 12, usando a

imagem binária gerada acima (edges) com o método HoughLines(Mat edges, Mat lines,

double rho, double theta, int threshold), que se baseia no algoritmo de Hough. O

HoughLines considera que todo ponto pode fazer parte de um conjunto de linhas e as

26

parametriza como um ponto usando coordenadas polares (rho, theta), sendo que rho é a

distancia da origem até a linha e theta, o ângulo que o segmento de reta de tamanho rho

forma com o eixo X. Este método retorna apenas as linhas parametrizadas pelo rho e

theta fornecidos que são maiores que threshold. Como a equação de uma linha usando

coordenadas polares é dada por rho = x*cos(theta) + y*sen(theta), uso theta igual a

pi/180 para obter apenas as linhas verticais.

Figura 12: Linhas candidatas a cortar a imagem encontradas com HoughLines.

Em seguida, uso o método findContours(Mat edges, List<MatOfPoint> contours, Mat

hierarchy, int mode, int method) que retorna uma lista com todos os contornos

(contours) da entrada (edges), que podem ser vistos na Figura 13, e testo se as linhas

candidatas a segmentar a foto cruzam com menos de um certo número de contornos. Se

positivo, elas são usadas para cortar a imagem, caso contrário elas são descartadas. As

linhas verdes da Figura 14 são as que passaram no teste e serão usadas para o corte da

foto.

27

Figura 13: Contornos retornados pelo findContours.

Figura 14: Linhas selecionadas para o corte da imagem.

28

Os argumentos mode e method são, respectivamente, o que vai ser retornado e como,

enquanto o argumento hierarchy é a hierarquia dos contornos retornados. A hierarquia é

uma matriz que armazena para cada contorno o indice do contorno anterior, do

posterior, do pai e do filho.

Segundo x, mode pode ter quatro valores diferentes: CV_RETR_EXTERNAL que

retorna somente os contornos mais externos, CV_RETR_LIST que retorna todos os

contornos sem inferir nada sobre sua hierarquia, CV_ RETR_CCOMP que retorna todos

os contornos e os classifica em apenas dois níveis ou CV_RETR_TREE que retorna

todos os contornos e uma hierarquia completa entre eles.

Ainda de acordo com x, method pode assumir cinco valores distintos, sendo

CV_CHAIN_APPROX_NONE, que retorna todos os pontos de um contorno, e

CV_CHAIN_APPROX_SIMPLE, que retorna apenas os pontos extremos de segmentos

horizontais, verticais ou diagonais, os mais importantes.

Finalmente, corto a imagem e rotaciono os pedaços em 90º no sentido anti-horário para

serem usadas como entrada do Tesseract porque uma de suas condições é que o texto a

ser reconhecido seja horizontal, como visto anteriormente. As imagens cortadas e

rotacionadas se encontram nas Figuras 15a-g.

29

Figura 15a-g: Imagens finais a serem usadas no reconhecimento.

30

2. Resultados

A seguir, são mostrados alguns dos resultados obtidos em diferentes situações. É

importante salientar que os resultados que serão apresentados nesta e nas próximas

seções foram obtidos num tablet Dell Venue7-3740-A10 com Android 4.4.4, 16GB e

câmera de 5 megapixels.

O OCR foi testado com várias fotos, porém, para não alongar demais o trabalho, serão

apresentados os resultados de apenas uma foto escolhida de forma randômica, que neste

caso significa que ela não foi escolhida por nenhum motivo específico como apresentar

o melhor ou o pior reconhecimento.

Na primeira tentativa com a Tesseract, a imagem mostrada na Figura 10 foi apenas

rotacionada por 90º no sentido anti-horário e foi obtido o texto mostrado na primeira

coluna da Tabela 4. Em seguida, foi utlizada uma expressão REGEX para remover os

caracteres que não fossem números e letras e o resultado ficou bem mais legível, como

ilustrado na segunda coluna da Tabela 5.

Tabela 5: Resultados obtidos com Tesseract sem pré-processamento.

Sem filtro REGEX Com filtro REGEX

*' THE DAMNCI CODEX %=

‘I } Q" , , . *5 V :1

jab? LEONA-«x. ‘4“ ,_(1AM[1._3;;

; jg MARTIN v IHRONES §L‘

! . ,/ .

m .M

, 31”,? , . ‘ ./ , p

dela cruz skmnyvdjppmg

3 ‘ j 33

de Ia cruz 6:2: 53:41:“H4e3390

. die *8 cruz crazy hot

Fifty Shades of Grey H E, 1;, James; :33 3

Fifty Shades Darker : E L 3,3: fl

1:: ’1‘ M

4 9' :5 '54 "j i

THE DAMNCI CODEX

I Q 5 V 1

jab LEONA x 4 1AM 1 3

jg MARTIN v IHRONES L

m M

31 p

dela cruz skmnyvdjppmg

3 j 33

de Ia cruz 6 2 53 41 H4e3390

die 8 cruz crazy hot

Fifty Shades of Grey H E 1 James 33 3

Fifty Shades Darker E L 3 3

1 1 M

4 9 5 54 j i

31

Finalmente, o resultado obtido após o pré-processamento da imagem usada é mostrado

na Figura 16.

a DAN BROWN i

THE DAMNCI CODE g

2 13 w 1 i

aftGEORCJE RR gi A GAME 1

J A RTIN 7f 7 THRONES 4

1 1 1 i u 4 WWW

dela cruz Ski Hy dippmgI

aIdela cruz sun kissed

J l I Fifty Shades of Grey H E L James

Fifty Shades Darker E E L James a 1

5

Z3 3 93

5r if 12 3 7 E

a 9 a a if 2 2

a 2 g M 2 I 5

J 3 2 t 3 a 9 75 A

n 1 V w

C

Figura 16: Resultado obtido com Tesseract após pré-processamento.

Como pode ser visto, o pré-processamento melhorou o reconhecimento de alguns

títulos, porém piorou o de outros e, obviamente, essa melhora ou piora e o seu grau

variam de imagem para imagem. Devido a performance da Tesseract não ter sido tão

boa quanto o esperado, decidiu-se testar uma alternativa proprietária para avaliar a

diferença de desempenho.

Dentre as diversas opções, foi escolhida a ABBYY Cloud OCR SDK, cuja

documentação é descrita em [15], devido a estar entre as mais conhecidas. Utilizando a

mesma Figura 10 como entrada, foi obtido o resultado ilustrado na Figura 17. Para isso,

foi executado o mesmo procedimento adotado na primeira tentativa com a Tesseract de

simplesmente rotacionar a imagem da figura 10 por 90º no sentido anti-horário.

32

DAN BROWN

THE DA^lNCI OODE

■I GEORGE R.R. a GAME of-|

MARTIN THRONES

DE LA CRUZ 1 u c Bloods

u e r a d e HYPERION DBG

de la cruz @ skinny-dipping

de la cruz @ sun-kissed

de la cruz ® crazy hot

Fifty Shades of Grey E L James ©

Fifty Shades Darker E L James ©

A p s i ** €0 W

4 * % t

Figura 17: Texto reconhecido usando ABBYY.

Como observado, o reconhecimento da ABBYY foi melhor que o da Tesseract, o que já

era esperado devido a primeira ser uma biblioteca paga. Porém, ela também teve alguma

dificuldade em reconhecer alguns títulos, especificamente, os que estão reescritos sobre

eles mesmos em uma cor similar e com letra cursiva.

33

6. Repositórios

Como explicado anteriormente, os dados dos livros são obtidos através do

reconhecimento de seus títulos nas lombadas dos livros nas fotos das prateleiras. Para

facilitar a catalogação, faz-se necessário o acesso a um repositório online de livros onde

esses dados possam ser encontrados.

Na expectativa de encontrar uma base atualizada e de fácil acesso com os dados dos

livros em português, foi pesquisada a Fundação Biblioteca Nacional por ser a agência

brasileira responsável por conceder ISBNs para todos os livros editados em território

nacional. No entanto, só é possível consultar a sua base com um registro por vez através

do site http://www.isbn.bn.br/website/consulta/cadastro e com a utilização de um

captcha.

Depois de pesquisar em outros sites da Biblioteca Nacional, foram encontradas duas

outras alternativas de sites de consulta http://acervo.bn.br/sophia_web/index.html e

http://bndigital.bn.br/acervodigital/, sendo o primeiro referente ao acervo completo da

Biblioteca Nacional e o segundo referente ao seu acervo disponível para consulta digital

e, portanto, bem menor que o anterior. O problema é que nenhuma destas opções

oferece uma API para acesso automatizado.

Em busca de uma resposta concreta em relação a API, foi consultada a Biblioteca

Nacional e a Agência Nacional do ISBN que confirmaram que o referido recurso não

existe. Devido a isso, foram incorporados o Google Books e a Amazon como

repositórios por serem sites bem difundidos no Brasil, na esperança de que devido a isso

possuíssem um vasto catálogo de livros em português.

34

A mesma dificuldade não se repetiu com os livros em Inglês, os quais podem ser

consultados a partir de diversos repositórios como os dois citados acima e a Biblioteca

do Congresso Americano que é a maior biblioteca do mundo.

Utilizando alguns dos títulos reconhecidos na Figura 16 e ISBNs, foram testados os três

repositórios e os resultados obtidos são apresentados a seguir, mostrando apenas os dois

primeiros resultados de cada busca quando houverem dois ou mais e removendo os

demais e o conteúdo de algumas tags que não serão utilizadas no presente trabalho.

1. Amazon

Busca por título

Sem sucesso

<ItemSearchResponse

xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">

<OperationRequest>

<HTTPHeaders>...</HTTPHeaders>

<RequestId>0dc19d0d-ad0f-4384-9126-914ee0480edb</RequestId>

<Arguments>...</Arguments>

<RequestProcessingTime>0.0533120000000000</RequestProcessingTime>

</OperationRequest>

<Items>

<Request>

<IsValid>True</IsValid>

<ItemSearchRequest>

<Keywords>THE DAMNCI CODE g</Keywords>

<ResponseGroup>Small</ResponseGroup>

<SearchIndex>Books</SearchIndex>

</ItemSearchRequest>

<Errors>

<Error>

<Code>AWS.ECommerceService.NoExactMatches</Code>

<Message>We did not find any matches for your request.</Message>

</Error>

</Errors>

</Request>

<TotalResults>0</TotalResults>

<TotalPages>0</TotalPages>

<MoreSearchResultsUrl>...</MoreSearchResultsUrl>

</Items>

</ItemSearchResponse>

35

Com sucesso

<ItemSearchResponse

xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">

<OperationRequest>

<HTTPHeaders>...</HTTPHeaders>

<RequestId>5a6ef911-aaac-48bb-b09c-061d295f53b2</RequestId>

<Arguments>...</Arguments>

<RequestProcessingTime>0.3604570000000000</RequestProcessingTime>

</OperationRequest>

<Items>

<Request>

<IsValid>True</IsValid>

<ItemSearchRequest>

<Keywords>Fifty Shades Darker E E L James a 1</Keywords>

<ResponseGroup>ItemAttributes</ResponseGroup>

<SearchIndex>Books</SearchIndex>

</ItemSearchRequest>

</Request>

<TotalResults>14</TotalResults>

<TotalPages>2</TotalPages>

<MoreSearchResultsUrl>...</MoreSearchResultsUrl>

<Item>

<ASIN>0345803493</ASIN>

<DetailPageURL>...</DetailPageURL>

<ItemLinks>...</ItemLinks>

<ItemAttributes>

<Author>E. L. James</Author>

<Binding>Paperback</Binding>

<Brand>Random House</Brand>

<CatalogNumberList>...</CatalogNumberList>

<EAN>9780345803498</EAN>

<EANList>...</EANList>

<Edition>Reprint</Edition>

<Feature>Adults Only</Feature>

<Feature>Fifty Shades Of Grey</Feature>

<Feature>Fifty Shades Darker</Feature>

<IsAdultProduct>0</IsAdultProduct>

<ISBN>0345803493</ISBN>

<ItemDimensions>...</ItemDimensions>

<Label>Vintage</Label>

<Languages>...</Languages>

<ListPrice>...</ListPrice>

<Manufacturer>Vintage</Manufacturer>

<ManufacturerMinimumAge

Units="months">252</ManufacturerMinimumAge>

<Model>RH-FSD2</Model>

<MPN>RH3498</MPN>

<NumberOfItems>1</NumberOfItems>

36

<NumberOfPages>544</NumberOfPages>

<PackageDimensions>...</PackageDimensions>

<PackageQuantity>1</PackageQuantity>

<PartNumber>RH3498</PartNumber>

<ProductGroup>Book</ProductGroup>

<ProductTypeName>ABIS_BOOK</ProductTypeName>

<PublicationDate>2012-04-17</PublicationDate>

<Publisher>Vintage</Publisher>

<ReleaseDate>2012-04-17</ReleaseDate>

<Studio>Vintage</Studio>

<Title>Fifty Shades Darker</Title>

</ItemAttributes>

</Item>

<Item>

<ASIN>1101946342</ASIN>

<DetailPageURL>...</DetailPageURL>

<ItemLinks>...</ItemLinks>

<ItemAttributes>

<Author>E L James</Author>

<Binding>Paperback</Binding>

<Brand>Random House</Brand>

<CatalogNumberList>...</CatalogNumberList>

<EAN>9781101946343</EAN>

<EANList>...</EANList>

<Feature>...</Feature>

<Feature>...</Feature>

<Feature>...</Feature>

<Feature>...</Feature>

<Feature>...</Feature>

<IsAdultProduct>0</IsAdultProduct>

<ISBN>1101946342</ISBN>

<ItemDimensions>...</ItemDimensions>

<Label>Vintage</Label>

<Languages>...</Languages>

<ListPrice>...</ListPrice>

<Manufacturer>Vintage</Manufacturer>

<Model>RH-GREY</Model>

<MPN>CNVELD-RH6350</MPN>

<NumberOfItems>1</NumberOfItems>

<NumberOfPages>576</NumberOfPages>

<PackageDimensions>...</PackageDimensions>

<PackageQuantity>1</PackageQuantity>

<PartNumber>CNVELD-RH6350</PartNumber>

<ProductGroup>Book</ProductGroup>

<ProductTypeName>ABIS_BOOK</ProductTypeName>

<PublicationDate>2015-06-18</PublicationDate>

<Publisher>Vintage</Publisher>

<ReleaseDate>2015-06-18</ReleaseDate>

<Studio>Vintage</Studio>

37

<Title>

Grey: Fifty Shades of Grey as Told by Christian (Fifty Shades of Grey

Series)

</Title>

</ItemAttributes>

</Item>

<Item>...</Item>

</Items>

</ItemSearchResponse>

Busca por ISBN

<ItemLookupResponse

xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-

01">

<OperationRequest>

<HTTPHeaders>...</HTTPHeaders>

<RequestId>25ce8470-c255-4106-ad04-bce2c34087f2</RequestId>

<Arguments>...</Arguments>

<RequestProcessingTime>0.1586340000000000</RequestProcessingTime

>

</OperationRequest>

<Items>

<Request>

<IsValid>True</IsValid>

<ItemLookupRequest>

<IdType>ISBN</IdType>

<ItemId>9780553573404</ItemId>

<ResponseGroup>ItemAttributes</ResponseGroup>

<SearchIndex>All</SearchIndex>

<VariationPage>All</VariationPage>

</ItemLookupRequest>

</Request>

<Item>

<ASIN>0553573403</ASIN>

<DetailPageURL>...</DetailPageURL>

<ItemLinks>...</ItemLinks>

<ItemAttributes>

<Author>George R.R. Martin</Author>

<Binding>Mass Market Paperback</Binding>

<Brand>Martin, George R. R.</Brand>

<CatalogNumberList>...</CatalogNumberList>

<Color>White</Color>

<EAN>9780553573404</EAN>

<EANList>...</EANList>

<Feature>ISBN13: 9780553573404</Feature>

<Feature>Condition: New</Feature>

38

<Feature>...</Feature>

<ISBN>0553573403</ISBN>

<ItemDimensions>...</ItemDimensions>

<Label>Bantam</Label>

<Languages>...</Languages>

<ListPrice>...</ListPrice>

<Manufacturer>Bantam</Manufacturer>

<MPN>9780553573404</MPN>

<NumberOfItems>1</NumberOfItems>

<NumberOfPages>831</NumberOfPages>

<PackageDimensions>...</PackageDimensions>

<PartNumber>9780553573404</PartNumber>

<ProductGroup>Book</ProductGroup>

<ProductTypeName>ABIS_BOOK</ProductTypeName>

<PublicationDate>1997-08-04</PublicationDate>

<Publisher>Bantam</Publisher>

<ReleaseDate>1997-08-04</ReleaseDate>

<Studio>Bantam</Studio>

<Title>A Game of Thrones (A Song of Ice and Fire, Book 1)</Title>

</ItemAttributes>

</Item>

<Item>

<ASIN>B000QCS8TW</ASIN>

<DetailPageURL>...</DetailPageURL>

<ItemLinks>...</ItemLinks>

<ItemAttributes>

<Author>George R. R. Martin</Author>

<Binding>Kindle Edition</Binding>

<EISBN>9780553897845</EISBN>

<Format>Kindle eBook</Format>

<Label>Bantam</Label>

<Languages>...</Languages>

<Manufacturer>Bantam</Manufacturer>

<NumberOfPages>819</NumberOfPages>

<ProductGroup>eBooks</ProductGroup>

<ProductTypeName>ABIS_EBOOKS</ProductTypeName>

<PublicationDate>2003-01-01</PublicationDate>

<Publisher>Bantam</Publisher>

<ReleaseDate>2003-01-01</ReleaseDate>

<Studio>Bantam</Studio>

<Title>A Game of Thrones (A Song of Ice and Fire, Book 1)</Title>

</ItemAttributes>

</Item>

</Items>

</ItemLookupResponse>

39

2. Biblioteca do Congresso Americano

Busca por título

Sem sucesso

<zs:searchRetrieveResponse

xmlns:zs="http://www.loc.gov/zing/srw/">

<zs:version>1.1</zs:version>

<zs:numberOfRecords>0</zs:numberOfRecords>

<zs:echoedSearchRetrieveRequest>

<zs:version>1.1</zs:version>

<zs:query>THE DAMNCI CODE g</zs:query>

<zs:maximumRecords>10</zs:maximumRecords>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordSchema>dc</zs:recordSchema>

</zs:echoedSearchRetrieveRequest>

</zs:searchRetrieveResponse>

Com sucesso

<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/">

<zs:version>1.1</zs:version>

<zs:numberOfRecords>131</zs:numberOfRecords>

<zs:records>

<zs:record>

<zs:recordSchema>dc</zs:recordSchema>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordData>

<srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="info:srw/schema/1/dc-schema

http://www.loc.gov/standards/sru/resources/dc-schema.xsd">

<title xmlns="http://purl.org/dc/elements/1.1/">100 essential American

poems /</title>

<creator xmlns="http://purl.org/dc/elements/1.1/">Pockell,

Leslie.</creator>

<type xmlns="http://purl.org/dc/elements/1.1/">text</type>

<publisher xmlns="http://purl.org/dc/elements/1.1/">New York : Thomas

Dunne Books,</publisher>

<date xmlns="http://purl.org/dc/elements/1.1/">2009.</date>

<language xmlns="http://purl.org/dc/elements/1.1/">eng</language>

<description xmlns="http://purl.org/dc/elements/1.1/">...</description>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

40

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<subject xmlns="http://purl.org/dc/elements/1.1/">American

poetry.</subject>

<identifier xmlns="http://purl.org/dc/elements/1.1/">...</identifier>

<identifier

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:9780312369804

(alk. paper)</identifier>

<identifier

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:0312369808 (alk.

paper)</identifier>

</srw_dc:dc>

</zs:recordData>

<zs:recordPosition>1</zs:recordPosition>

</zs:record>

<zs:record>

<zs:recordSchema>dc</zs:recordSchema>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordData>

<srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="info:srw/schema/1/dc-schema

http://www.loc.gov/standards/sru/resources/dc-schema.xsd">

<title xmlns="http://purl.org/dc/elements/1.1/">9-11 : artists

respond.</title>

<creator xmlns="http://purl.org/dc/elements/1.1/">Chaos!

Comics.</creator>

<creator xmlns="http://purl.org/dc/elements/1.1/">Dark Horse

Comics.</creator>

<creator xmlns="http://purl.org/dc/elements/1.1/">Image

Comics.</creator>

<creator xmlns="http://purl.org/dc/elements/1.1/">DC Comics,

Inc.</creator>

<type xmlns="http://purl.org/dc/elements/1.1/">text</type>

<type xmlns="http://purl.org/dc/elements/1.1/">Graphic novels.</type>

<type xmlns="http://purl.org/dc/elements/1.1/">Graphic novels United

States.</type>

<publisher xmlns="http://purl.org/dc/elements/1.1/">Milwaukie, Or. :

Dark Horse Comics,</publisher>

<date xmlns="http://purl.org/dc/elements/1.1/">c2002.</date>

<language xmlns="http://purl.org/dc/elements/1.1/">eng</language>

<description xmlns="http://purl.org/dc/elements/1.1/">Subtitle from vol.

1.</description>

<description xmlns="http://purl.org/dc/elements/1.1/">...</description>

<description xmlns="http://purl.org/dc/elements/1.1/">...</description>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<description xmlns="http://purl.org/dc/elements/1.1/"/>

<subject xmlns="http://purl.org/dc/elements/1.1/">...</subject>

<subject xmlns="http://purl.org/dc/elements/1.1/">...</subject>

<identifier

41

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:1563898810 (pbk. :

v. 1)</identifier>

<identifier

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:9781563898815

(pbk. : v. 1)</identifier>

<identifier

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:1563898780 (pbk. :

v. 2)</identifier>

<identifier

xmlns="http://purl.org/dc/elements/1.1/">URN:ISBN:9781563898785

(pbk. : v. 2)</identifier>

</srw_dc:dc>

</zs:recordData>

<zs:recordPosition>2</zs:recordPosition>

</zs:record>

<zs:record>...</zs:record>

</zs:records>

<zs:nextRecordPosition>11</zs:nextRecordPosition>

<zs:echoedSearchRetrieveRequest>

<zs:version>1.1</zs:version>

<zs:query>a DAN BROWN i</zs:query>

<zs:maximumRecords>10</zs:maximumRecords>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordSchema>dc</zs:recordSchema>

</zs:echoedSearchRetrieveRequest>

</zs:searchRetrieveResponse>

Busca por ISBN

<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/">

<zs:version>1.1</zs:version>

<zs:numberOfRecords>1</zs:numberOfRecords>

<zs:records>

<zs:record>

<zs:recordSchema>mods</zs:recordSchema>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordData>

<mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.loc.gov/mods/v3" version="3.5"

xsi:schemaLocation="http://www.loc.gov/mods/v3

http://www.loc.gov/standards/mods/v3/mods-3-5.xsd">

<titleInfo>

<title>Once upon a time</title>

<subTitle>a collection of classic fairy tales</subTitle>

</titleInfo>

<titleInfo type="uniform">...</titleInfo>

<name type="personal">

42

<namePart>Grimm, Jacob</namePart>

<namePart type="date">1785-1863</namePart>

</name>

<name type="personal">

<namePart>Grimm, Wilhelm</namePart>

<namePart type="date">1786-1859</namePart>

</name>

<name type="personal">

<namePart>Tong, Kevin</namePart>

</name>

<typeOfResource>text</typeOfResource>

<originInfo>

<place>...</place>

<place>...</place>

<publisher>Hyperion</publisher>

<dateIssued>c2011</dateIssued>

<dateIssued encoding="marc">2011</dateIssued>

<issuance>monographic</issuance>

</originInfo>

<language>...</language>

<language objectPart="translation">...</language>

<physicalDescription>...</physicalDescription>

<abstract type="Summary">...</abstract>

<tableOfContents>...</tableOfContents>

<note type="statement of responsibility" altRepGroup="00">illustrated by

Kevin Tong.</note>

<subject>...</subject>

<subject authority="lcsh">...</subject>

<classification authority="lcc">GR166 .K5313 2011</classification>

<classification authority="ddc" edition="23">398.2/0943</classification>

<relatedItem>...</relatedItem>

<identifier type="isbn">9781401324636</identifier>

<identifier type="isbn">1401324630</identifier>

<identifier type="lccn">2011036526</identifier>

<identifier type="oclc">ocn749869054</identifier>

<relatedItem>...</relatedItem>

<relatedItem>...</relatedItem>

<recordInfo>...</recordInfo>

</mods>

</zs:recordData>

<zs:recordPosition>1</zs:recordPosition>

</zs:record>

</zs:records>

<zs:echoedSearchRetrieveRequest>

<zs:version>1.1</zs:version>

<zs:query>bath.isbn=9781401324636</zs:query>

<zs:maximumRecords>1</zs:maximumRecords>

<zs:recordPacking>xml</zs:recordPacking>

<zs:recordSchema>mods</zs:recordSchema>

43

</zs:echoedSearchRetrieveRequest>

</zs:searchRetrieveResponse>

3. Google books

Busca por título

Sem sucesso (THE DAMNCI CODE g)

{

"kind": "books#volumes",

"totalItems": 0

}

Com sucesso (a DAN BROWN i)

{

"kind": "books#volumes",

"totalItems": 574,

"items": [

{

"kind": "books#volume",

"volumeInfo": {

"title": "Suia para A CHAVE DE SALOMAO de DAN BROWN",

"authors": [

"GREG TAYLOR"

],

"publisher": "Editora Record",

"description": ...,

"industryIdentifiers": [

{

"type": "ISBN_10",

"identifier": "8501073903"

},

{

"type": "ISBN_13",

"identifier": "9788501073907"

}

],

"readingModes": {...},

44

"pageCount": 206,

"printType": "BOOK"

},

{...}

]

}

Busca por ISBN

{

"kind": "books#volumes",

"totalItems": 1,

"items": [

{

"kind": "books#volume",

"id": "bIZiAAAAMAAJ",

"etag": "QEvQOUNH560",

"selfLink": "https://www.googleapis.com/books/v1/volumes/bIZiAAAAMAAJ",

"volumeInfo": {

"title": "A Game of Thrones",

"authors": [

"George R. R. Martin"

],

"publisher": "Spectra",

"publishedDate": "1997",

"description": ...,

"industryIdentifiers": [

{

"type": "OTHER",

"identifier": "UOM:39015050507618"

}

],

"readingModes": {...},

"pageCount": 835,

"printType": "BOOK",

"categories": [...],

"averageRating": 4.0,

"ratingsCount": 1437,

"maturityRating": "NOT_MATURE",

"allowAnonLogging": false,

"contentVersion": "1.0.1.0.preview.0",

"imageLinks": {...},

45

"language": "en",

"previewLink": ...,

"infoLink": ...,

"canonicalVolumeLink": ...

},

"saleInfo": {

"country": "BR",

"saleability": "NOT_FOR_SALE",

"isEbook": false

},

"accessInfo": {

"country": "BR",

"viewability": "NO_PAGES",

"embeddable": false,

"publicDomain": false,

"textToSpeechPermission": "ALLOWED",

"epub": {

"isAvailable": false

},

"pdf": {

"isAvailable": false

},

"webReaderLink": ...,

"accessViewStatus": "NONE",

"quoteSharingAllowed": false

},

"searchInfo": {...}

}

]

}

Devido à inexistência de um repositório brasileiro, os três repositórios mencionados

foram testados com alguns livros em português através do título e do ISBN,

principalmente, para ter uma ideia de sua abrangência dos livros na língua portuguesa

por não serem iniciativas brasileiras. Nestes testes foram utilizados livros de autores

diferentes e de categorias diversas, incluindo livros de ficção, livros universitários de

matemática, livros de linguística e um livro didático de francês, dentre outros.

46

Dos três repositórios, o que apresentou os melhores resultados foi o da Amazon que não

encontrou apenas o livro “Alter Ego +3”. A Google Books ficou logo atrás e a

Biblioteca do Congresso Americano foi a que se mostrou a menos abrangente.

47

7. Conclusão

Conforme foi visto nos capítulos anteriores, o desenvolvimento de uma aplicação com o

objetivo de auxiliar o gerenciamento de coleções de livros com foco em facilitar a carga

inicial de dados é um tema bastante explorado conforme indicado pelo grande número

de aplicativos encontrados. As aplicações já desenvolvidas, resolvem alguns dos

problemas mencionados no trabalho utilizando diversas abordagens como realidade

aumentada e escaneamento de ISBNs, por exemplo, enquanto a proposta principal deste

trabalho é utilizar o reconhecimento ótico de caracteres.

Resumindo, foi desenvolvido neste projeto um aplicativo orientado a objeto com

reconhecimento de título através de OCR e processamento de imagens que consulta

APIs de outros sistemas para facilitar a carga inicial de dados.

Com relação aos repositórios, eles foram essenciais para o êxito na realização deste

trabalho porque sem eles o principal objetivo não teria sido atingido. Além disso, a

despeito da dificuldade inicial de encontrar um repositório brasileiro, a alternativa

utilizada se mostrou uma boa opção para livros em português conforme comprovado

pelos testes realizados.

Ademais, foi mostrado como a qualidade do OCR ainda pode evoluir bastante,

conforme observado nos resultados obtidos, principalmente, com a Tesseract dado que o

reconhecimento ainda é bastante variável, dependendo muito da qualidade, iluminação,

distância e ângulo da foto. Embora a alternativa proprietária testada tenha retornado um

resultado melhor, ela também tem suas fraquezas, como textos sobrepostos.

Apesar disso, o principal objetivo do trabalho que era evitar que o usuário tivesse que

digitar todas as informações livro a livro ainda é atendido mesmo que o reconhecimento

esteja aquém do desejado porque a pessoa pode só editar o título reconhecido, sem nem

48

precisar remover o livro da estante e o restante das informações vem dos repositórios

utilizados.

49

Referências Bibliográficas

[1] THE AUGMENTED REALITY CENTER, “ShelvAR”, 2016, Disponível em:

http://augmentedreality.miamioh.edu/portfolio-items/shelvar/, (Acesso em: 17 jan.

2016).

[2] CHIISAI APP SOLUTIONS, LLC., “BOOK CRAWLER OVERVIEW”,

Disponível em: http://www.chiisai.com/j25/, (Acesso em: 9 ago. 2015).

[3] BALLI, G., “My Book List – Keep a collection of all your books on iPhone &

iPad”, Disponível em: http://giacomoballi.com/entrepreneur/my-book-list/, (Acesso em:

11 fev. 2016).

[4] PANURGE WEB STUDIO, “The main functions of Bibliophilia”, Disponível em:

http://www.panurge.it/bibliophilia/index_en.php, (Acesso em: 17 mar. 2016).

[5] AGÊNCIA BRASILEIRA DO ISBN, “Tudo sobre o ISBN”. Disponível em:

http://www.isbn.bn.br/website/tudo-sobre-o-isbn. Acesso em: 16 jan. 2016.

[6] MORGAN, E. L., “An Introduction to the Search/Retrieve URL Service (SRU)”.

Ariadne, n. 40, jul. 2004. Disponível em: http://www.ariadne.ac.uk/issue40/morgan/.

(Acesso em: 23 mar. 2016).

[7] AMAZON, “Product Advertising API Developer Guide”,

http://aws.amazon.com/archives/Product-Advertising-API/8967000559514506, 2013,

(Acesso em fevereiro 2016).

[8] LIBRARY OF CONGRESS, “SRU 1.1 Specification”, Disponível em:

http://www.loc.gov/standards/sru/, (Acesso em: 20 nov. 2015).

[9] GOOGLE, “Google Books API”, Disponível em:

https://developers.google.com/books/, (Acesso em: 20 nov. 2015).

50

[10] GARTNER, INC., “Gartner Says Worldwide Smartphone Sales Grew 9.7 Percent

in Fourth Quarter of 2015”, 2016, Disponível em:

http://www.gartner.com/newsroom/id/2996817, (Acesso em: 15 mar. 2016).

[11] CHERIET, M., KHARMA, N., LIU, C. L., et al, Character recognition systems:

a guide for students and practitioners. John Wiley & Sons, 2007.

[12] SMITH, R. 2007. “An Overview of the Tesseract OCR Engine”. In: Proceedings of

the IEEE Ninth International Conference on Document analysis and Recognition, pp.

629-633, Curitiba, Set 2007.

[13] RICE, S. V., JENKINS, F. R., NARTKER, T. A., The Fourth Annual Test of OCR

Accuracy, Las Vegas, 1995.

[14] BRADSKI, G., KAEHLER, A., Learning OpenCV. 1ed. Sebastopol, O’Reilly

Media, Inc., 2008.

[15] ABBYY, “Cloud OCR SDK Documentation“, Disponível em:

http://ocrsdk.com/documentation/, (Acesso em: 14 mar. 2016).