NI&D inovatec
Ficha do projeto. Sobre o NIDinovatec.
Relatórios técnicos:
Relatórios finais (setembro 2023):
Relatório técnico cientifico (doc)
Ent #1: estado da arte (doc)
Ent #2: motor de transcrição de paginas (doc)
Ent #3: testes dos produtos obtidos (doc)
Videos de demonstração:
Versão longa
(cerca de 5min)
Biblioteca do Ateneu Comercial do Porto
Sociedade de Geografia de Lisboa
Herbario do MHNC da UP (botanica)
Biblioteca da FCUP
Galeria da biodiversidade (MHNC UP)
Main screen and terminal window
Also with final txt window
GCV OCR
GCV OCR
Protótipo de transcrição de documentos por OCR pelo serviço Google AI Vision
(Mac. desktop)
NYT.R&D: Using Computer Vision to Create A More Accurate Digital Archive (21.7.2021)
Processo (jornais, século XIX)
Identificação de página:
Tipo (ex: primeira página, notícias, publicidade, etc)
Qualidade (ex: se bem digitalizada ou com manchas, etc)
Melhoramento da imagem
Segmentação da estrutura (colunas)
OCR
Operador
TESTBED: Diário Popular e Jornal do Comércio (1883-1893) - ver aqui
Desenvolvimento
Dados de acesso
username: inovatecocr
password: ProjetoOCR2021
Repositório código, versão web de pesquisa v1
https://github.com/inovatecpt/arquivo_project_v1 (Novembro 2022)
Repositório Privado de Código v2 (Fevereiro 2022)
https://github.com/inovatecpt/ocr_v2
Repositório Privado de Código v1 (Julho 2021)
https://github.com/inovatecpt/ocr_v1/
Ferramentas já testadas
Apontamentos sobre os resultados das mesmas
Links para código específico guardado no GitHub
NI&D INOVATEC
Reuniões de trabalho
(listagem e links para as gravações de todas reuniões (zoom) aqui)
Reuniões
Reunião #88 - 13 Set, 11h00 - PJ4
Adelino, Eduardo, João
passos finais da versão da aplicação web para UP
discussão de aspectos referentes à certificação final
Reunião #87 - 30 Jun, 11h00 - PJ4
Adelino, Eduardo, João
passos finais da versão da aplicação web para UP
discussão de aspectos referentes à certificação final
Reunião #86 - 16 Jun, 11h00 - PJ4
Adelino, Eduardo, João
Fase final da aplicação web de fichas para entregar à UP.
discussão de aspetos referentes ao SGIDI.
Reunião #85 - 19 Mai, 11h00 - PJ1, PJ2, PJ7
Adelino, Eduardo, João
Fase final da aplicação web de fichas para entregar ao Ateneu Comercial do Porto.
Demonstração da aplicação web para executar testes na correção de textos com OpenAi.
Discussão das campanhas google ads.
Reunião #84 - 9 Mai, 15h00 - PJ6
Adelino, Eduardo, João
Discussão sobre a possível integração de IA na plataforma dos jornais para correção de erros de OCR.
Testes com aplicação desktop (OpenAi api) na correção de excertos dos jornais.
Reunião #83 - 18 Abr, 10h30
Adelino, Eduardo, João
discussão sobre a possibilidade de aplicação do sistema de fichas ao arquivo de fichas de processos da PIDE.
apresentação de melhoramentos na aplicação desktop que usa a a api da OpenAI.
Reunião #83 - 14 Abr, 10h30 - PJ2, PJ7
Adelino, Eduardo, João
Definição dos parâmetros para desenvolver projectos "entregáveis" ao Ateneu Comercial do Porto e à FCUP.
Análise das campanhas Google Ads.
Reunião #82 - 11 Abr, 10h30
Adelino, Eduardo, João A., João B., Nuno, Alfredo Azevedo.
Discussão dos aspectos a cumprir referentes à norma NP 4457.
Reunião #81 - 31 Mar, 10h30 - PJ3, PJ7
Adelino, Eduardo, João
Discussão de processos de ML para aplicação no melhoramento do OCR dos jornais.
Campanhas Google Ads.
Reunião #80 - 24 Mar, 10h30 - PJ7
Adelino, Eduardo, João
análise de resultados das campanhas Google Ads.
Estudo de possiveis marketplaces para venda dos livros InovatecPress.
Reunião #79 - 21 Mar, 10h30 - PJ7, PJ5
Adelino, Eduardo, João
análise de resultados das campanhas Google Ads e desenvolvimento de novas campanhas.
outras estratégias de SEO.
Reunião #78 - 17 Mar, 10h30 - PJ7, PJ5
Adelino, Eduardo, João
análise de resultados das campanhas Google Ads
Criação de página facebook para InovatecPress
Reunião #77 - 13 Mar, 10h30 - PJ7, PJ5
Adelino, Eduardo, João
análise de resultados das campanhas Google Ads
Colocação de produtos no Google Merchant Center
Reunião #76 - 9 Mar, 10h30 - PJ7, PJ5
Adelino, Eduardo, João
análise das campanhas Google Ads
Google Analytics, Google Searchconsole
análise de plataformas de trabalho em equipa para desenvolver SGIDI
Reunião #75 - 3 Mar, 11h30 - PJ3, PJ5
Adelino, Eduardo, João
análise das aplicações da api do ChatGPT3 no OCR dos jornais
Demonstração de um aplicativo desktop de teste da api do ChatGPT3
Configuração de campanhas no Google Ads
Reunião #74 - 3 Fev, 11h30 - PJ5, PJ7
Adelino, Eduardo, João
Discussão de estratégias de SEO
Redes Sociais
Google Ads
Reunião #73 - 27 Janeiro, 11h30 - PJ3, PJ7
Adelino, Eduardo, João
análise de um projecto europeu de OCR:
publicidade Inovatec
implementar Google Analytics e Webmaster/Search Console em loja.inovatec.pt
Reunião #72 - 18 Janeiro, 11h30 - PJ2, PJ3, PJ4, PJ6
Adelino, Eduardo, João
demonstração da aplicação web de fichas finalizada
utilização de AI para correcção de texto
Reunião #71 - 5 Janeiro, 11h30 - PJ2, PJ4
Adelino, Eduardo, João
demonstração da pesquisa
tarefas seguintes:
importação de fichas de outra institutição e filtragem adequada
edição de fichas
Reunião #70 - 4 Janeiro, 10h - PJ2, PJ3, PJ4
Adelino, João
revisão de código e funcionalidades
demonstração e documentação da estratégia de deployment
Reunião #69- 30 Dezembro 11h30 - PJ2, PJ3, PJ4
Adelino, Eduardo, João
demonstração dos modelos da aplicação de fichas
Reunião #69- 22 Dezembro 15h30 - PJ1, PJ2, PJ3, PJ4
Adelino, João
configuração de ambiente de development e produção
Reunião #68- 29 Novembro 15h30 - PJ1, PJ2, PJ3, PJ4
Adelino, Eduardo, João
configuração de ambiente de development e produção
Reunião #67- 18 Novembro 15h30 - PJ1, PJ2, PJ3, PJ4
Adelino, João, Eduardo
revisão da estratégia de carregar imagens/json de fichas via API na aplicação web
_________________________________________________________________________________________________________________
Reunião #66- 11 Novembro 15h00 - PJ1, PJ2, PJ3, PJ4
Adelino, João, Eduardo
estado do projecto
revisão da estrutura da tabela de fichas/jornais
_________________________________________________________________________________________________________________
Reunião #65- 09 Novembro 15h00 - PJ1, PJ2, PJ3, PJ4
Adelino, João
- Passos:
João:
- wireframes de design de fichas
- base de dados em django, com admin a funcionar, e colocar online
- documentação de fichas, e app jornais, no README.md
- rever github, deployment testes/produção
- rever importação da base de dados dos jornais e soluções
_________________________________________________________________________________________________________________
Reunião #64- 28 Outubro, 15h30 - ID16
Galeria da Biodiversidade (album): oportunidades para conteudos generativos
__________________________________________________________________________________________________________________
Reunião #63 - 21 Outubro, 11h30 - PJ2, PJ3, PJ4
Adelino, Eduardo, João
acrescentar changelog e wishlist ao website. Ex: problema com número de colunas, quando há tabelas em páginas de jornais, com link para exemplo/consequências
dar prioridade de desenvolvimento às fichas
Estrutura da tabela records_images:id
institution - numero (vai ficar noutra tabela)
collection - numero (vai ficar noutra tabela)
group (ex: gaveta, pasta) - texto (colocar depois noutra tabela normalizado)
record_id (ficha_id, vem do nome de ficheiro da digitalização) - numero
image_file (ficheiro da digitalização) - texto
side (f ou b, front or back) - caracter
text - texto
# url final das imagens
_dominio_/records/_institution_/_collection_/_image_file_
https://ficheiros.inovatec.pt/records/1/1/Colecção_0001_f.jpg
# imagens associadas (para futuro)
Estrutura base de dados
# institution
id, name
# collection
id, institution_id, name
# group (gaveta, pasta)
id, name, type, photo, name_clean
1_1_1_1_f.jpg
1_1_1_1_b.jpg
institution/collection/group/record_id_f.jpg
ABC_2345_f.jpg
Estrutura de URLs:
https://arquivo.inovatec.pt/fichas/_institution_/_collection_/_group_/_record_
https://arquivo.inovatec.pt/fichas/1/1/1/1
a fazer: normalizar os nomes dos grupos (pastas, gavetas)
__________________________________________________________________________________________________________________
Reunião #62 - 19 Outubro, 14h30 - PJ1, PJ2, PJ3, PJ4
Adelino, João
rever estrutura de base de dados para nova importação, limpa, sem conteúdos novos
análise de instalação/configuração da ferramenta Fly
__________________________________________________________________________________________________________________
Reunião #61 - 04 Outubro, 15h30 - PJ1, PJ2, PJ3, PJ4
Adelino, Eduardo, João
análise do software de correção da Priberam
_____________________________________________________________________________________________________________
Reunião #60 - 21 Setembro, 12h - PJ1, PJ2, PJ3, PJ4
Adelino, Eduardo, João
fichas: Google Doc AI custos (OCR: 1000 páginas €7.5, DOC AI: 1000 páginas €55)
Tarefas para os jornais:
1) Afinar arquivo.inovatec.pt
Linha da ocorrência (joão)
Opção txt a partir do pdf no viewer (com highlight no txt) (joão)
Save do search (tabela xls) - jornal/pagina/coluna/data, link par apágina, termo pesquisado, excerto (joão)
Estatisticas por jornal e ano dos termos (button e não directo na pesquisa) (joão -já feito)
corrigir colunas vazias (adelino e joão)
autenticação e autorização (geral, não por jornal ou outro item) (joão)
colocar e documentar no GitHub (adelino e joão)
2) incluir os jornais transmontanos (adelino)
Tarefas para fichas online
1) online
acertar modelo base de dados
desenvolver aplicação
2) offline
https://box.wolan.net/plenario-portugal-old.mp4
https://box.wolan.net/assembleia_municipal_taxa.mp4
__________________________________________________________________________________________________________________
Reunião #59 - 09 Agosto, 11h30 - PJ2, PJ4
Adelino, Eduardo, João
demo adelino da aplicação desktop de fichas
__________________________________________________________________________________________________________________
Reunião #58 - 02 Agosto, 11h - PJ1, PJ2, PJ3, PJ4
Adelino, Eduardo, João
demonstração da nova aplicação desktop de analisar fichas
discussão sobre estrutura de base de dados, normalizada
demonstração de funcionalidades de ver texto na aplicação web jornais
__________________________________________________________________________________________________________________
Reunião #57 - 19 Julho, 15h30 - PJ2, PJ4
Adelino, Eduardo, João
discussão de modelo para fichas
Dados de fichas
museu de história natural:
zoologia (20k?)
temas
herbário/botânica (130k)
etnografia/antropologia (fotografias e desenhos no verso) (5k)
ateneu:
fichas bibliográficas (45k)
fichas reservados
fichas de moedas
sociedade de geografia:
fichas bibliográficas (100k)
fichas reservados (6k)
fichas do museu (colecções associadas) (10k->20k?)
fichas da fototeca (10k?)
fichas dos sócios (~1k)
ficheiros.inovatec.pt/fichas/Colecção de fichas de ateneu de africa/01_01.jpg
01_01.jpg
pasta: coleccao_de_fichas
sub_pasta: sub_coleccao
nome ficheiro: gaveta_numeracao.jpg
estrutura de ficheiro:
instituicao / coleccao / gaveta_numeracao.jpg
exemplos:
- sociedade_de_geografia/zoologia/leoes/01.jpg
- ateneu/biblioteca/a/01.jpg
Modelo de tabela de instituição
id (int)
nome_instituicao (nome)
path_ficheiros (nome)
Modelo de tabela de coleccaotw
id (int)
nome_coleccao (nome)
instituicao_pai (id)
path_ficheiros (nome)
Modelo para aplicação de fichas
id (int)
instituição (id)
colecção (id)
gaveta (nome)
frente (link imagem/jpg)
frente_ocr (texto)
frente_tipo (texto, foto, desenho)
verso (link imagem/jpg)
verso_ocr (texto)
verso_tipo (texto, foto, desenho)
metadados (notas, suporte para documentos associados, json)
tipo_escrita (dactilografado, manuscrito)
tabela 'texto_historico_editado'
id ficha_id texto
__________________________________________________________________________________________________________________
Reunião #56 - 12 Julho, 11h30 - PJ2, PJ4, PJ3
Adelino, Eduardo, João
análise do progresso do protótipo local de análise de fichas
análise das estatísticas de resultados no arquivo.inovatec.pt
Notas sobre o layout das fichas da Botânica (mhnc):
https://docs.google.com/document/d/1APlXXlII7Y0GdJTQYMgTZvbjYgMw-5mzewjgEh0ZrxA/edit?usp=sharing
Tabelas com as características das imagens das 3 gavetas digitalizadas da Botânica (mhnc):
https://docs.google.com/spreadsheets/d/1CGDhFjJW2kmkgxrHg51OBOZLCsk8qfzr6zegazJa6y4/edit?usp=sharing
__________________________________________________________________________________________________________________
Reunião #55 - 05 Julho, 15h30 - PJ2, PJ4, PJ3
Adelino, Eduardo, João
Revisão do estado da arte de 2022, dos vários serviços cloud, para extração de informação de fichas: https://docs.google.com/document/d/1VKDVBsi9v4TLHGSPqLE_KX0DvW5mqZl0CP9PGiZ8nrc/edit?usp=sharing
Outra pesquisa para análise:
https://nanonets.com/blog/handwritten-character-recognition/
Avaliação da correcção de erros pelo corrector ortográfico do google docs:
https://docs.google.com/document/d/1Ewg1_aIKwXWGAkZoWlIguqjsW-B3wkSURUF3nKSoSZA/edit?usp=sharing
Análise de performance dos vários serviços de ocr nas fichas do Ateneu:
https://docs.google.com/document/d/1h_2PRf6UpgW6RGBOEOJTRls3YKbFKgEt4yFsgni1Cf0/edit?usp=sharing
https://docs.google.com/document/d/1VKDVBsi9v4TLHGSPqLE_KX0DvW5mqZl0CP9PGiZ8nrc/edit?usp=sharing
https://docs.google.com/spreadsheets/d/1R5w3nAGFfNIgoGkWGzhmLMCfFr89ELYTPoe9bPVhjfk/edit?usp=sharing
========================================================================================
Plano
A. fichas: ateneu, botânica, antropologia e zoologia
(0) carregar fichas (amostras) da botânica e antropologia para gphotos (accounts diferentes para poder fazer search) (para demonstração)
(1) Prototipos locais
(i) Aplicação local (independente das fichas) para search a partir do txt do ocr pelo google AÍ.
Layout tipo gphotos (layout).
Opção ver txt associado á visualização da ficha digitalizada
Filtro de gavetas no search
Filtro de datas
(ii) Editor local de fichas por operador humano: guardar ocr original e corrigido para calcular erros
(2) Melhorar ocr de caligrafias específicas por ML machine learning
(i) Criar dataset de erros que permita melhorar o ocr por técnicas de machine learning (ensinar caligrafias menos ortodoxas)
(3) (i) colocar a consulta on-line
B. Jornais online
(i) Afinar arquivo.inovatec.pt
Linha da ocorrência
Opção txt a partir do pdf no viewer (com highlight no txt)
Save do search (tabela xls) - 2ª prioridade
Estatisticas por jornal e ano dos termos (button e não directo na pesquisa)
corrigir colunas vazias
autenticação e autorização (geral, não por jornal ou outro item)
(ii) incluir os jornais transmontanos
_______________________________________________________________________________________________________________
Reunião #54- 04 Julho, 16h00 - PJ2, PJ4
Adelino, Eduardo, João
análise de fichas em vários serviços de OCR
interface ideal para pesquisa de fichas seria uma search box e resultados em imagens, como o Google Photos
========================================================================================
__________________________________________________________________________________________________________________
Reunião #53 - 29 Junho, 15h30 - PJ2, PJ4, PJ3
Adelino, Eduardo, João
revisão de papers e estado da arte
avaliação de estratégias, com e sem ML, para melhorar a detecção de texto manuscrito:
Plano:
(1) fichas ATENEU:
(i) Aplicação local para search a partir de ocr pelo google AÍ
(ii) Editor de fichas por operador humano: guardar ocr original e corrigido para calcular erros
(iii) Criar datset de erros que permita melhorar o ocr por técnicas de machine learning (ensinar caligrafias específicas menos ortodoxas)
(2) fichas MUSEU: amostras de fichas de zoologia, botânica e antropologia. Identificar oportunidades de search.
(3) Afinar arquivo.inovatec.pt e incluir os jornais transmontanos
__________________________________________________________________________________________________________________
Reunião #52 - 28 Junho, 15h30 - PJ3
Adelino, Eduardo, João
demonstração da pesquisa aplicação Django/PostgreSQL
notas sobre colocação em produção em arquivo.inovatec.pt
definição de tarefas e detalhes a acertar
trabalho futuro aplicado a fichas e livros digitalizados
_______________________________________________________________________________________________________________
Reunião #51 - 27 Junho, 16h30 - PJ3
Adelino, João
demonstração e revisão de nova estrutura da aplicação Django e pesquisa em PostgreSQL
__________________________________________________________________________________________________________________
Reunião #50 - 20 Junho, 11h30 - PJ2, PJ4, PJ3
Adelino, Eduardo, João
resolvida questão relativa a PDF.js
demonstração da pesquisa com highlight a funcionar, após abrir o PDF
demonstração de pesquisa de terceiros, em que falhava o highlight devido a whitespace entre palavras no OCR
próximos passos: colocar na cloud em jornais.inovatec.pt
Links:
Virtual card processing, US Copyright office: https://copyright.gov/vcc/
Digitized card catalogue, Univ, Gent: https://lib.ugent.be/en/info/cards
A framework dor focument processing solutions: https://ljvmiranda921.github.io/notebook/2022/06/19/document-processing-framework/
__________________________________________________________________________________________________________________
Reunião #50 - 09 Junho, 15h30 - PJ3
Adelino, Eduardo, João
discussão sobre qual base de dados a utilizar. Sqlite3 ou PostgreSQL
__________________________________________________________________________________________________________________
Reunião #49 - 08 Junho, às 15h - PJ3
Adelino, João
reunião de desenvolvimento
__________________________________________________________________________________________________________________
Reunião #48 - 03 Junho às 11h30 - PJ3
Adelino, Eduardo, João
demonstração de filtros
discussão sobre privacidade de ficheiros PDF offline vs online
definição de próximos passos (apontados no README.md) do github
__________________________________________________________________________________________________________________
Reunião #47 - 27 Maio às 15h30 - PJ3
Adelino, Eduardo, João
demonstração de pesquisa online e discussão tipos de pesquisa a suportar com SQLite
discussão de optimização de PDFs e configuração de Storage online para alojamento
João:
configurar storage VPS online com PDFs, e endereço arquivo.inovatec.pt
colocar a aplicação django a correr e documentar, com comandos no Makefile
__________________________________________________________________________________________________________________
Reunião #46 - 13 Maio às 17h30 - PJ3
Adelino, Eduardo, João
demonstração da pesquisa e ler o PDF em browsers:
search a funcionar e abre o documento, falta ir para a página especifica e fazer o higlight
discussão de como colocar em produção
__________________________________________________________________________________________________________________
Reunião #45 - 12 Maio às 17h00 - PJ3
Adelino, João
Integração com PDF.js e Django
__________________________________________________________________________________________________________________
Reunião #44 - 06 Maio às 15h00 - PJ3
Adelino, João
reunião rápida para discutir próximos passos de desenvolvimento web: filtragem, colocar em produção, colocar assets online, leitura de PDF no PDF.js
__________________________________________________________________________________________________________________
Reunião #43 - 05 Maio às 17h - PJ3
Adelino, João
resolução de bug de paginação de resultados de pesquisa em desenvolvimento web em Django
__________________________________________________________________________________________________________________
Reunião #42 - 28 Abril às 18h - PJ3
Adelino, João
estrutura de desenvolvimento em Django
__________________________________________________________________________________________________________________
Reunião #41 - 13 Abril às 15h30 - PJ3
Adelino, Eduardo; joão
exploração de um primeiro esquema de base de dados para pesquisa, em SQLite
indexação utilizando full text search
demonstração do GUI com full text search, com resultados a surgir em < 0.2ms, optimizado mais de 100x em relação à solução anterior
base de dados
Próximos passos:
pesquisa local está boa, apenas normalizar agora a base de dados protótipo
jornais online
instalação protótipo local no computador do Eduardo
investigar utilização de ML para reconhecimento de caligrafia
__________________________________________________________________________________________________________________
Reunião #40 - 1 Abril às 15h30 - PJ3
demonstração das optimizações ao motor de busca
demonstração do interface de pesquisa e visualização de resultados
discussão das vantagens/desvantagens de migração para uma estrutura de base de dados relacional, que suporte multiplos projectos (ex: jornais, fichas)
discussão de próximos passos
__________________________________________________________________________________________________________________
Reunião #39 - 25 Março às 11h30 - PJ3
analise dos desenvolvimentos da pesquisa
nextsteps:
estruturar em base de dados
elaborar um interface de drag and drop, que faça o OCR via Google Cloud Vision, mostrando o texto
discussão sobre se iniciar já uma convergência entre jornais e fichas, para haver uma aplicação all-in-one que suporte diversos tipos de projectos de digitalização
__________________________________________________________________________________________________________________
Reunião #38 - 18 Março às 11h30 - PJ3
10 anos de jornal analisados
ocupa cerca de 350GB externos, 2.6MB em TXT
pesquisa demorada:
exemplo: 'companhia nacional de caminhos' demora 139s (2.5min) a ser executada)
ideias de filtros:
filtros dentro de filtros
opção de poder gravar o search
nº de resultados por janela
poder seleccionar a publicação e o intervalo de anos
seleccionar a página dos resultados
exportar dos resultados
análise da ferramenta https://voyant-tools.org/
__________________________________________________________________________________________________________________
Reunião #37 - 11 Março às 11h30 - PJ3
Adelino, Eduardo, João
comparação de sincrono com asyncrono. local está rápido
revisão da aplicação desktop de pesquisa, que abre directamente no Chrome os PDFs com a palavra pesquisada em destaque
discussão da melhor forma de ter uma versão online da pesquisa.
__________________________________________________________________________________________________________________
Reunião #36 - 04 Março às 11h30 - PJ3
Adelino, Eduardo
análise de pedidos síncronos vs assíncronos à api da google
discussão de melhorias na aplicação local de pesquisa
análise de outras plataformas de tratamento documental digital:
debates.parlamento.pt
digigov.cepese.pt
__________________________________________________________________________________________________________________
Reunião #35 - 18 Fevereiro às 11h30 - PJ3 - (gravação zoom)
Adelino, Eduardo, João
análise da optimização de pedidos de OCR ao Google Cloud Vision
alteração de processos de OCR
Processo Antigo:criar PDF de páginas de cada issue -> segmentar colunas para imagens -> criar PDF de imagens -> efectuar pedido para Google Cloud Vision do OCR -> fazer download do JSON
Processo Novo:criar PDF de páginas de cada issue -> segmentar colunas para imagens -> criar PDF de imagens -> upload para Google Cloud Storage -> efectuar pedido do Google Cloud Vision OCR a partir dos ficheiros já alojados no Google Cloud Storage -> fazer download do JSON
JSON retornado por OCR efectuado no Google Cloud Storage tem estrutura diferente do feito localmente- revisão da estrutura de JSON do OCR efectuado localmente vs Google Cloud Storage.- o retornado via Google Cloud Storage é 1/3 do tamanho da resposta do que é feito localmente
prioridade é colocar a pesquisa de vários anos operacional, depois optimiza-se
__________________________________________________________________________________________________________________
Reunião #34 - 11 Fevereiro às 11h30 - PJ3 - (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
Discutiu-se a pesquisa efectuada do estado da arte reconhecimento de caracteres manuscritosRevisão dos testes desenvolvidos, com ferramentas cloud da Google e Microsoft Azure.Abordou-se como melhorar o copy/paste de documentos PDF gerados com texto em hOCR.
https://docs.google.com/document/d/1nttjhsdPdkJZWfIXx1Oxd39883tgG7PBcp9VC1ayF6w/edit?usp=sharing
__________________________________________________________________________________________________________________
Reunião #33 - 22 Novembro às 11h30 - PJ3 - (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
Adelino esteve na Biblioteca do Ateneu Comercial do Porto a digitalizar algumas fichas
revisão das funcionalidades da Google Cloud Vision API via Document AI
definição de abordagem de recorte em 3 das fichas, para separar o conteúdo e melhor processamento
abordagem alternativa: utilizar o GCV OCR normal e depois analisar o JSON
__________________________________________________________________________________________________________________
Reunião #32 - 12 Novembro às 15h00 PJ2 , PJ3 - (gravação zoom)
Adelino, Eduardo, João
discutir o foco entre pedidos asycronos e software sequencial que temos
foco em converter edições ou multiplas edições
investigação a ser efectuado sobre fichas manuscritas
ainda falta resolver o copy/paste do Preview e Safari (problema de colunas)
__________________________________________________________________________________________________________________
Reunião #31 - 11 Novembro às 15h00 - PJ3
Adelino, João
processo asyncrono de converter vários jornais ao mesmo tempo
se podia ser: fila de espera, threads, asincrono
__________________________________________________________________________________________________________________
Reunião #30 - 5 Novembro às 11h30 - PJ3 - (gravação zoom)
Adelino, Eduardo, João
demonstração da resolução da layer de texto dos PDFs não estar selecionável (mudou-se de tipo de letra embeded, para Courier)
Próximos objectivos:
text search sobre jornais completos
fichas de catálogos:
e estratégias:
processar JSON
treinar AI Azure ou Google para identificar (investigar para testar diferenças entre as duas plataformas)
__________________________________________________________________________________________________________________
Reunião #29 - 19 Outubro às 15h00 - PJ3
Adelino, João
identificar erros de PDF entre software de leitura
__________________________________________________________________________________________________________________
Reunião #28 - 15 Outubro às 11h3 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
flowcharts (1 e 2) do Adelino de processo
análise dos tamanhos de ficheiros (artefactos)
análise de diferenças entre shell pipe e save directo, do hocr-pdf
estratégia de como encontrar um método para um PDF final suportar Chrome, Acrobat e Preview
tabela comparativa
versão web: fazer upload de um PDF de jornal, receber uma versão pesquisável
Adelino e João reunem na próxima 3ª, dia 19/Outubro
__________________________________________________________________________________________________________________
Reunião #27 - 24 Setembro às 11h30 - PJ3 - (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
actualização de progressos na geração de PDF
análise de como juntar os hOCR das várias colunas de uma página, de modo a ter uma página completa passível de ser pesquisável
Prioridade de motores de rendering:
Chrome
Acrobat
Preview
hocr-pdf --savefile output.pdf .
Fazer:
identificar o porquê de haver discrepâncias no render entre Acrobat, Preview e Chrome. Deixar documentado em tabela
hocr merge de várias colunas (testar manualmente e depois fazer código para merge dos HTML)
pdf merge de várias páginas
__________________________________________________________________________________________________________________
Reunião #26 - 23 Setembro às 11h30 - PJ3
Adelino, João
desevolvimento de questões relativas a gerar PDF a partir do hOCR
__________________________________________________________________________________________________________________
Reunião #25 - 16 Setembro às 11h30 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
agendada reunião com Adelino para próxima 3ª trabalhar na geração de PDF e organizar no GitHub
Ordem prioridades:
ter os primeiros 10 anos dos dois jornais
pesquisa a funcionar
revisão do PageViewer:
tesseract detecta melhor as alturas das letras individualmente. hOCR feito através do GCV parece que dá uma altura maxima e minima constante baseada na linha em si e não nas palavras individualmente
Rever:
rever código que gera hOCR (featurebreaks e underscores)
rever porque é que o hocr-to-pdf.py está a gerar um desfazamento da layer de hOCR com a imagem, quando o PageViewer dá um overlay correcto
ter 10 anos de cada jornal pesquisáveis
__________________________________________________________________________________________________________________
Reunião #24 - 9 Setembro às 11h30 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
revisão do hOCR
problema poderá estar na conversão para hOCR ou hOCR/imagem para PDF
testar Page Viewer e hOCR.js para identificar se o problema está no ficheiro hOCR gerado
abertura no Page Viewer (32bit em Windows) indicou que a conversão de coordenadas do Google Cloud Vision para hOCR está correcta
__________________________________________________________________________________________________________________
Reunião #23 - 7 Setembro às 15h00 - PJ3
Adelino, João
discussão sobre abordagens para avançar com a questão de produzir um melhor hOCR
GCV2hocr > úlitma linha é feito copy/paste como última
__________________________________________________________________________________________________________________
Reunião #22 - 2 Setembro às 11h30 - PJ3(gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
revisão dos avanços do merge do hOCR com imagem para gerar o PDF:
merge já se faz com sucesso, contudo o copy/paste não vem ordenado, devido a overlays de bounding boxes.
também porque o PDF assume no copy/paste que elementos em overlay, que estejam mais à esquerda, tem prioridade
Eduardo: testar com outras páginas de livros mais recentes:
testar código no livro do nascimento
testar código num livro recente
Adelino demonstra a ferramenta de pesquisa de texto que desenvolveu em Python:
Melhorias: possibilidade de ser um search por combined search AND, OR, NOT
A fazer:
testes de hOCR
melhor pesquisa
__________________________________________________________________________________________________________________
Reunião #21 - 13 Agosto às 11h30 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
análise do progresso efectuado com a conversão hOCR e merge imagem/OCR para PDF
progresso do João não foi com muito sucesso
versão anterior do Adelino gerava, embora com algumas questões: coordenadas erradas, sem espaços entre palavras no copy/paste,
Processo de tratamento:imagem => escalar + optimização => Google OCR => hOCR => (hOCR + imagem) => PDF pesquisável
Adelino demonstra:
a possibilidade de utilizar um corpus para correcção de texto.
ferramenta de search em Python, com GUI
Eduardo demonstra:
análises que fez aos resultados do OCR, para encontrar padrões e erros
https://docs.google.com/document/d/1AO4r24bMtDmAjyXRdcJ6Md-wRdTpRfhrp5_RDjJQl7g/edit?usp=sharing
Próximos passos:
escalar as ferramentas para processar não só uma única página digitalizada, mas mais issues
melhor visualizações de erros (análises do Eduardo + visualizações Adelino)
__________________________________________________________________________________________________________________
Reunião #20 - 06 Agosto às 11h30 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
João partilhou o progresso na conversão de hOCR. Conseguiu já gerar o ficheiro hOCR, actualizar o código de merge para PDF, contudo ainda tem de:
realizar o escape de caracteres como &, pois o merge lê o ficheiro hOCR/HTML, como XML
linhas duplicadas no hOCR que é exportado
merge não está operacional
Adelino:
Inserção dos valores de confiança de cada caracter, devolvidos na resposta JSON da google, na tabela de comparação entre texto original (ocr da google) e texto corrigido manualmente.
demonstração de ferramenta para visualização e localização de caracteres na imagem original através de tabela de comparação.
Próximos passos:
Criação de tabela de comparação sem inclusão de espaços/quebras de linhas, quebras de parágrafos e hífens
aplicação de um motor de busca sobre o texto devolvido pelo OCR da google e identificação do local da expressão na imagem original.
Testar a submissão de imagens de texto editadas de modo a corrigir as "patologias" identificadas, e criar tabelas comparativas com texto corrigido manualmente.
__________________________________________________________________________________________________________________
Reunião #19 - 29 Julho, às 16h - PJ3(gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
João partilhou o progresso na conversão de hOCR
Revisão da análise que o Eduardo fez aos erros de OCR (patologias: doc)
categorização do tipo de erros
discussão de estratégias para corrigir erros
Adelino partilhou papers de estratégias de correção de erros de jornais finlandesas
https://drive.google.com/file/d/1dP_ZiM8ae716V2E_8wZO_Y5OHkv1hnZ2/view
https://drive.google.com/file/d/111UTI6ELaU2Wca-Yn_IpJoECGtFx6Ozs/view
Passos seguintes:
Adelino: vai experimentar imagens corrigidas e efectuar testes/avaliações
João: vai completar o hOCR
__________________________________________________________________________________________________________________
Reunião #18 - 23 Julho, às 11h30 - PJ3 (gravação zoom1)
Adelino, Eduardo, João
João apresentou os desenvolvimentos que tem efectuado no conversor Google Cloud Vision para hOCR: https://docs.google.com/document/d/16vLaVtQJeRNFzcjj2cTjUy2OhO4jVBbddjG45yV5BZM/edit
Esteve-se a analisar a estrutura do que retorna o Google Cloud Vision, e as diferenças entre as mesmas: Exemplo: algumas estruturas retornam texto e palavras completos, outros não.
Utilização das ferramentas de análise de resultados do JSON da Google, para analisar alguns testes
Analisou-se um vídeo da equipa de Arquivos do NYTimes
__________________________________________________________________________________________________________________
Reunião #17 - 15 Julho, às 11h30 - PJ3(gravação zoom1)
Adelino, Eduardo, João
Junção das respostas JSON isoladas de cada coluna de texto numa só
de modo a constituirem a resposta da página completa.
Comparação dos resultados de páginas enviadas com e sem segmentação.
Os resultados são melhores na confiança das respostas tanto dos simbolos (ver) como das palavras (ver).
As quebras de linha, hifens e parágrafos, são detectados com muito maior eficácia (ver).
__________________________________________________________________________________________________________________
Reunião #16 - 2 Julho, às 16h30 - PJ3 (gravação zoom1) (gravação zoom2)
Adelino, Eduardo, João
__________________________________________________________________________________________________________________
Reunião #15 - 28 Junho, às 16h30
Adelino, Eduardo, João
Discussão sobre outros métodos de segmentação das colunas de texto
Identificação e ordenamento de colunas de texto
_________________________________________________________________________________________________________________
Reunião #14 - 2 Junho
Adelino, João
rever código
__________________________________________________________________________________________________________________
Reunião #13 - 28 Maio, às 17h30 - PJ3 (gravação zoom 1) (gravação zoom 2)
Adelino, Eduardo, João
João mostrou a estrutura de código que fez no GitHub
https://github.com/inovatecpt/ocr
Adelino e João reúnem na próxima semana para organizar o código no GitHub
Tarefas João:
hocr e requests Google
__________________________________________________________________________________________________________________
Reunião #12 - 21 Maio, às 17h30 - PJ3 (gravação zoom)
Adelino, Eduardo, João
João fez:
Código Python de juntar de imagens em PDFs, a partir de pastas
PDF merge de PDFs únicos que estejam numa pasta
Continua a investigar como processar melhor o JSON que a google retorna e converter para hOCR. Tem de acabar de escrever o código para fazer os pedidos à Google sem usar bibliotecas
A fazer na próxima semana (João terá mais tempo)
Organização do repositório
Documentação
Integrar o código que fez com o que o Adelino tem feito
Pedido João: partilhar as imagens de trabalho
João vai fazer: um diagrama do processo
__________________________________________________________________________________________________________________
Reunião #11 - 13 Maio, às 17h30 - PJ3 (gravação zoom)
Adelino, Eduardo, João
João fez:
criar estrutura inovatec no GitHub
estrutura de código em estrutura modular independente:
PDF merge (juntar imagens originais num único PDF, como ZIP)
Settings gerais (ex: token de acesso ao Google, nível de aumento de imagem, etc )
*Melhorar Imagem (melhorar a resolução da imagem)
*Segmentar Imagem (cortar colunas)
*Google OCR (efetuar o OCR via Google Cloud, juntar colunas)
*Estatísticas (calcular estatísticas de OCR)
Conversor hOCR (para o texto ser depois possível de juntar com PDF final)
PDF convert (juntar imagens + hOCR, para haver um PDF final pesquisável)
Azul: por desenvolver (João)
Laranja: experiências já efectuadas (João)
Verde: Adelino
Interface (linha de comandos, aplicação desktop ou interface web)
Por completar:
Conseguir identificar o porquê das diferenças nos pedidos à Google por vários métodos (web, storage, api)
merge JSON das diferentes colunas
Conversor Google Cloud Vision -> hOCR
arranjar um nome
Adelino:
tem alguns exemplos de merge hOCR com PDF
Imagem + hOCR (convertido do Google Cloud Vision) = PDF
A fazer:
migrar o código já desenvolvido para a nova estrutura modular
__________________________________________________________________________________________________________________
Reunião #10, 12 Maio, às 11h30 - PJ3
Adelino, João
Nova estrutura do repositório
Estrutura de ficheiros, código modular
arquivodigital.inovatec.pt
__________________________________________________________________________________________________________________
Reunião #9, 28 Abril, às 17h - PJ3(gravação zoom)
Adelino, Eduardo, João
Investigação hOCR
Nome do projecto:
Sugestão de próximos passos, João vai organizar:
Criação organização ‘inovatecpt’ no GitHub
Acertar estrutura do código:
Folders:
Imagens
Output/dist
Src:
Código fonte organizado
README como index
Ficheiros de settings/requirements
History/log
README
Identificar diferenças nos pedidos à Google (web, storage, api)
merge JSON
hOCR
Adelino vai continuar a investigar:
Optimização das imagens
Sugestão de próxima reunião: 10 de Maio
__________________________________________________________________________________________________________________
Reunião #8, 21 Abril, às 17h - PJ3 (gravação zoom 1) (gravação zoom 2)
Analisou-se progresso e ferramentas GUI que o Adelino desenvolveu
Decidiu-se explorar a integração do OCR do Google Cloud Vision, feita por colunas, em PDF, via o formato intermédio hOCR
Pensar num nome
__________________________________________________________________________________________________________________
Reunião #7, 19 Abril, às 10h-11h30- PJ3
Imagens de páginas (medir qualidade da imagem, aumentar resolução e ajustes contraste)
Identificar processo de OCR (partir ou não em colunas)
Processar OCR (via Google Cloud Vision)
hOCR -> merge imagem/hOCR = PDF
reunir PDFs das páginas de uma edição num só PDF
hOCR tools: https://github.com/ocropus/hocr-tools
- acertar estrutura do código, assente na ordem de tarefas que temos para desenvolver:
- 1 pasta para ficheiros/imagens
- 1 pasta para código, separada por tarefas e funções
- 1 pasta para outputs
- 1 ficheiro de settings na raiz do diretório
- 1 README
__________________________________________________________________________________________________________________
Reunião #6 - 12/04/2021 - PJ3 (gravação zoom 1) (gravação zoom 2)
Encontrar um nome de projecto para a próxima reunião
Falou-se das diferenças entre correr o Google Cloud Vision API via Google Storage ou programaticamente. João ainda vai analisar melhor o porquê destas diferenças.
Acertar estrutura de documentação de projecto (Google Docs + Sites)
Adelino apresentou código de segmentação, identificando linhas verticais e horizontais
Haver a possibilidade de criar um Google Doc automaticamente do OCR do texto
Contexto de objectivos:
Fazer input de uma folha de jornal e retornar um PDF com texto pesquisável
Ter passos intermédios de extrair informação, com prioridade nas notícias e só depois os classificados
Melhoramento de imagens de 72dpi para 300dpi, melhorou a qualidade do OCR:
Encontrar a dimensão mínima de altura de uma letra para ser bem reconhecível pelo COR
João e Adelino: organizar código e documentar progresso que está a ser feito para atingir os objectivos
Outras ferramentas:
__________________________________________________________________________________________________________________
Reunião #5 - 05/04/2021 - PJ3 (gravação zoom 1) (gravação zoom 2)
Análise de novas ferramentas de crop automático de colunas
__________________________________________________________________________________________________________________
Reunião #4 - 29/03/2021 - PJ3
Análise das ferramentas de estatística que o Adelino desenvolveu para analisar o resultado do OCR
Experimentação com pré-processamento de imagem, de forma a melhorar o OCR
__________________________________________________________________________________________________________________
Reunião #3 - 22/03/2021 - PJ3 (gravação zoom)
Optou-se por criar ferramentas de diagnóstico de erros de OCR, de modo a validar opções e a identificar o grau de confiança de identificação de cada letra
Processo:
Análise estatística
Representação gráfica dessa estatística
__________________________________________________________________________________________________________________
Reunião #2 - 15/03/2021 - PJ3
Adelino testou ferramentas da Azure, quer de OCR como de AutoML de classificação de documentos
O OCR da Azure não vai até ao detalhe de cada letra, optou-se por utilizar antes o Google OCR que é mais detalhado
__________________________________________________________________________________________________________________
Reunião #1 - 11/03/2021 - PJ3
links partilhados:
https://azure.microsoft.com/pt-pt/services/cognitive-services/computer-vision/
https://cloud.google.com/automl
https://towardsdatascience.com/ocr-for-scanned-numbers-using-googles-automl-vision-29d193070c64
https://github.com/microsoft/VoTT
__________________________________________________________________________________________________________________