Converta dados PDF em entradas de banco de dados PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Converter dados PDF em entradas de banco de dados

Várias organizações e empresas dependem de documentos PDF para compartilhar documentos importantes, como faturas, recibos de pagamento, finanças, ordens de serviço, recibos e muito mais. No entanto, os PDFs não são os formatos preferidos para armazenar dados históricos, pois não podem ser facilmente exportados e organizados em fluxos de trabalho. Assim, as pessoas usam algoritmos de extração de informações para digitalizar PDFs e documentos digitalizados em formatos estruturados como JSON, CSV, Tabelas ou Excel que podem ser facilmente convertidos em outros fluxos de trabalho organizacionais.

Em alguns casos, os PDFs contêm informações essenciais para serem processadas em diferentes ERPs, CMS e outros sistemas baseados em bancos de dados. Infelizmente, os documentos PDF não possuem uma função fácil de PDF para banco de dados, e escrever scripts ou construir um fluxo de trabalho em torno dessa tarefa é um pouco complicado. É aqui que os algoritmos de OCR e Deep Learning (DL) entram em cena para extrair dados desses formatos PDF e exportá-los para um banco de dados. Nesta postagem do blog, veremos diferentes maneiras de fazer isso usando tecnologias DL, bem como algumas APIs populares no mercado.

O que é conversão de PDF em banco de dados?

Conversão de PDF para banco de dados é a tarefa de exportar dados de PDFs para um banco de dados como Postgres, Mongo, MySQL, etc.

Suponha que devêssemos construir uma aplicação web ou um sistema ERP que armazenasse e mantivesse informações de faturas de diferentes fontes. Adicionar faturas históricas manualmente a um banco de dados é uma tarefa difícil e altamente sujeita a erros. Por outro lado, usar um OCR simples pode não extrair tabelas de faturas com precisão.

É aqui que a conversão avançada de PDF em banco de dados orientada por IA se torna útil!

Este processo de conversão de PDF em banco de dados baseado em IA pode ser automatizado? - Sim.

Nas seções abaixo, usamos visão computacional e aprendizado profundo para detectar regiões de tabelas em documentos digitalizados. Essas tabelas são posteriormente armazenadas em um formato de dados específico, como CSV ou Excel, e serão enviadas diretamente para bancos de dados.

Antes de discutir isso, vamos entender alguns casos de uso em que a detecção de PDF em banco de dados pode ser útil.

Diferentes casos de uso de PDF para bancos de dados

Os bancos de dados são as melhores maneiras de armazenar informações tanto na nuvem quanto no armazenamento local. Eles nos permitem realizar diversas operações e manipulações por meio de consultas simples. Aqui estão alguns casos de uso que podem ser bastante otimizados com um fluxo de trabalho automatizado de conversão de PDF em banco de dados:

  1. Gestão de faturas na Web: As empresas e organizações lidam com diversas faturas todos os dias; e é difícil para eles processar cada fatura manualmente. Além disso, às vezes, levantam e recebem faturas em formato não digital, o que as torna mais difíceis de rastrear. Conseqüentemente, eles contam com aplicativos baseados na web que podem armazenar todas as suas faturas em um só lugar. Um conversor de PDF para banco de dados poderia automatizar a extração de dados das faturas para o aplicativo web. Para automatizar essas tarefas de forma eficiente, poderíamos executar tarefas cron e integrá-las a serviços de terceiros, como n8n e Zapier – quando uma nova fatura é digitalizada e carregada, ele pode executar o algoritmo e colocá-la automaticamente nas tabelas.
  2. Gerente de Estoque EComt: Muito gerenciamento de estoque de e-com ainda é executado por meio da entrada manual de produtos em PDFs e cópias digitalizadas. No entanto, eles precisam carregar todos os seus dados em um software de gerenciamento de faturamento para acompanhar todos os seus produtos e vendas. Conseqüentemente, usar o algoritmo de conversão de tabela em banco de dados pode ajudar a automatizar sua entrada manual e economizar recursos. Esse processo normalmente envolve a digitalização da lista de inventário de documentos digitalizados e sua exportação para tabelas de banco de dados específicas com base em diferentes regras e condições de negócios.
  3. Extração de dados de pesquisas: Para coletar feedback e outras informações valiosas, geralmente realizamos uma pesquisa. Eles fornecem uma fonte crítica de dados e insights para quase todos os envolvidos na economia da informação, desde empresas e meios de comunicação até governos e acadêmicos. Quando eles são coletados on-line, é fácil extrair o status dos dados da tabela com base na resposta do usuário e carregá-los em um banco de dados. No entanto, na maioria dos casos, as respostas da pesquisa estão no papel. Nesses casos, é muito difícil coletar informações manualmente e armazená-las em formato digital. Portanto, confiar em uma tabela para algoritmos de banco de dados pode economizar tempo e também reduzir custos adicionais.

Como extrair informações de PDFs para bancos de dados relacionais e não relacionais?

Um arquivo PDF é visto como dois tipos diferentes, gerado eletronicamente e gerado não eletronicamente.

  1. PDFs eletrônicos: este documento PDF digitalizado pode ter texto oculto atrás da imagem; estes também são chamados de PDFs gerados eletronicamente.
  2. PDFs não eletrônicos: neste tipo, vemos mais conteúdo codificado como imagens. Este é o caso quando você tem um documento impresso digitalizado em um arquivo PDF.

Poderíamos contar com linguagens de programação simples e estruturas como Python e Java para o primeiro tipo (gerado eletronicamente). Para os PDFs gerados não eletronicamente, precisaremos utilizar técnicas de visão computacional com OCR e aprendizado profundo. No entanto, esses algoritmos podem não ser os mesmos para todos os algoritmos de extração de tabela e precisarão ser alterados dependendo do tipo de dados para obter maior precisão. PNL (Natural Language Processing) também é utilizado para compreender os dados dentro das tabelas e extraí-los em alguns casos.

Por outro lado, existem dois tipos de bancos de dados (relacionais e não relacionais); cada um desses bancos de dados possui diferentes conjuntos de regras com base em sua arquitetura. Um banco de dados relacional é estruturado, ou seja, os dados são organizados em tabelas. Alguns exemplos incluem MySQL, Postgres, etc.

Em contraste, o banco de dados não relacional é orientado a documentos, o que significa que todas as informações são armazenadas em uma ordem mais parecida com uma lista de lavanderia. Dentro de um único documento construtor, você terá todos os seus dados listados – por exemplo, MongoDB.

PDF para um banco de dados quando os documentos são gerados eletronicamente

Conforme discutido, para PDFs gerados eletronicamente, o processo de extração de tabelas é simples. A ideia é extrair tabelas e depois usar scripts simples para convertê-las ou adicioná-las em tabelas. Para extração de tabelas de PDFs, existem basicamente duas técnicas.

Fluxo da técnica nº 1: O algoritmo analisa tabelas com base em espaços em branco entre as células para simular uma estrutura de tabela – identificando onde o texto não está presente. Ele é baseado na funcionalidade do PDFMiner de agrupar caracteres em uma página em palavras e frases usando margens. Nesta técnica, primeiro, as linhas são detectadas fazendo estimativas aproximadas com base na posição do eixo y de algum texto (ou seja, altura). Todo o texto na mesma linha é considerado parte da mesma linha. Em seguida, o leitor é agrupado e reunido como um grupo diferente para identificar as colunas da tabela. Por último, a tabela é definida com base nas linhas e colunas detectadas nas etapas anteriores.

Técnica # 2 Malha: Em contraste com o fluxo, o Lattice é mais determinístico. O que significa que não depende de suposições; ele primeiro analisa tabelas que definiram linhas entre as células. Em seguida, ele pode analisar automaticamente várias tabelas presentes em uma página. Esta técnica funciona essencialmente observando a forma dos polígonos e identificando o texto dentro das células da tabela. Isso seria simples se um PDF tivesse um recurso que pudesse identificar polígonos. Se tivesse, teria plausivelmente um método para ler o que está dentro dele. No entanto, isso não acontece. Conseqüentemente, a visão computacional é amplamente utilizada para identificar essas formas e extrair o conteúdo da tabela.

As tabelas extraídas são salvas principalmente em formato de quadro de dados. É um dos tipos de dados nativos oferecidos por um dos pandas da biblioteca Python mais populares. Existem várias vantagens em armazenar dados de tabela em um quadro de dados. Eles podem ser facilmente manipulados, manipulados e exportados para diferentes formatos, como JSON, CSV ou tabelas. No entanto, antes de inserirmos esses quadros de dados nas tabelas, devemos primeiro conectar-nos ao banco de dados DB-Client e depois migrar a tabela. Usando linguagens como Python, podemos encontrar diversas bibliotecas que podem se conectar a essas fontes de dados e exportar dados.

PDF para o banco de dados quando os documentos são gerados não eletronicamente

As técnicas discutidas acima podem não funcionar para PDFs gerados não eletronicamente, pois os dados aqui são digitalizados manualmente por meio de uma fonte diferente. É por isso que usaremos técnicas de OCR e Deep Learning para extrair dados de documentos digitalizados e exportá-los para bancos de dados.

Resumindo, Reconhecimento Óptico de Caracteres, OCR é uma ferramenta especial que converte letras impressas de documentos digitalizados em texto editável. Para identificar tabelas PDF de documentos, primeiro precisamos identificar a posição da tabela e depois aplicar o OCR para extrair dados das células da tabela. A seguir estão as etapas de como isso é alcançado:

  1. Primeiro, detectamos os segmentos de linha aplicando contornos horizontais e verticais.
  2. As interseções de linha entre linhas são detectadas observando a intensidade dos pixels de todas as linhas. Se um pixel de linha tiver mais intensidade que o restante do pixel, ele faz parte de duas linhas e, portanto, é uma interseção.
  3. As bordas da tabela são determinadas observando a intensidade dos pixels das linhas cruzadas. Aqui, todos os pixels de uma linha são tomados, e as linhas mais externas representam os limites da tabela.
  4. A análise da imagem é traduzida nas coordenadas PDF, onde as células são determinadas. O texto é atribuído a uma célula com base em suas coordenadas xey.
  5. OCR é aplicado às coordenadas para extrair o texto
  6. O texto extraído é exportado para um quadro de dados com base na posição da tabela.

É assim que podemos extrair tabelas usando CV. No entanto, existem algumas desvantagens aqui. Esses algoritmos falham em tabelas grandes e tabelas com estilos de modelo diferentes. É aqui que entra o aprendizado profundo; eles usam um tipo especial de estrutura de rede neural para aprender com os dados e identificar padrões semelhantes com base nos aprendizados. Ao longo da última década, alcançaram desempenho de última geração, especialmente para tarefas como extração de informações. Agora, vamos ver como as redes neurais profundas podem aprender com os dados e extrair tabelas de qualquer documento.

O treinamento de redes neurais profundas envolve um fluxo de trabalho específico; esses fluxos de trabalho são frequentemente alterados com base no tipo de dados com os quais estamos trabalhando e no desempenho de seu modelo. A primeira fase do fluxo de trabalho envolve a coleta de dados e o processamento deles com base em nosso modelo. No nosso caso de extração de tabelas de documentos PDF, o conjunto de dados deve conter idealmente documentos não estruturados. Esses documentos são convertidos em imagens, carregados como tensores e preparados como uma classe de carregador de dados para treinamento. A seguir, normalmente definimos todos os hiperparâmetros necessários para o treinamento. Geralmente incluem a configuração do tamanho do lote, função de perda e otimizador do modelo. Por último, uma arquitetura de rede neural é definida ou construída sobre um modelo pré-definido. Este modelo será treinado com base nos dados e ajustado com base nas métricas de desempenho.

A seguir está uma captura de tela das diferentes etapas envolvidas no treinamento de um modelo de aprendizado profundo:

Fluxo de trabalho típico de ML (fonte)

Extraindo dados de PDF e exportando-os para banco de dados SQL usando Python

Até agora, aprendemos o que é a conversão de PDF em banco de dados e discutimos alguns casos de uso onde ela pode ser útil. Esta seção abordará esse problema de forma prática usando Visão Computacional e detectará tabelas em PDFs digitalizados e exportá-los-á para bancos de dados. Para acompanhar, certifique-se de instalar Python e OpenCV em sua máquina local. Como alternativa, você pode usar um bloco de notas on-line do Google Collab.

Etapa 1: Instale Tabula e Pandas

Neste exemplo, usaremos Tabula e Pandas para extrair e enviar tabelas para bancos de dados. Vamos instalá-los via pip e importá-los para o nosso programa.

import tabula
import pandas as pd

Etapa 2: Lendo tabelas no Dataframe

Agora, usaremos o read_pdf função de tabula para ler tabelas de PDFs; observe que esta biblioteca funciona apenas em documentos PDF gerados eletronicamente. A seguir está o trecho de código:

table = tabula.read_pdf("sample.pdf",pages='all',multiple_tables=False)

df = pd.concat(table)

Aqui, como podemos ver, primeiro usamos para ler o conteúdo do arquivo PDF, definimos o parâmetro multiple_tables para False, pois o documento usado no exemplo possui apenas uma tabela.

Agora carregaremos esta lista em um quadro de dados usando pandas, e você pode verificar o tipo da tabela usando o método type; isso retornará um quadro de dados nativo do pandas.

Etapa 3: Migrando Dataframe para Postres

Antes de colocarmos nossa tabela nos bancos de dados, primeiro devemos estabelecer uma conexão com ela a partir de nosso programa, e podemos fazer isso usando o comando sqlalchemy cliente em python. Da mesma forma, diferentes linguagens de programação oferecem este tipo de clientes de banco de dados para interagir com bancos de dados diretamente de nossos programas.

Neste programa, usaremos o create_engine método que nos permite conectar com o banco de dados; certifique-se de substituir as credenciais do banco de dados na string fornecida para que isso funcione. A seguir, usamos o write_frame função para exportar a tabela extraída para o banco de dados conectado.

engine = create_engine('postgresql+psycopg2://username:password@host:port/database')

sql.write_frame(df, 'table_name', con, flavor='postgresql')

E assim, conseguimos exportar tabelas de PDFs para o banco de dados, o que parece bastante simples e fácil, pois usamos um PDF simples, processado e gerado eletronicamente. Para extrair tabelas de tabelas geradas não eletronicamente, a seguir estão técnicas populares de aprendizado profundo que podem ser utilizadas:

  1. Artigos com Código – GFTE: Extração de Tabela Financeira Baseada em Gráfico
  2. Artigos com código – PubTables-1M: Rumo a um conjunto de dados e métricas universais para treinar e avaliar modelos de extração de tabelas
  3. TableNet: modelo de aprendizado profundo para detecção de tabelas de ponta a ponta e extração de dados tabulares de imagens de documentos digitalizados

Digite Nanonets: OCR avançado para conversão de tabela PDF em banco de dados

Esta seção verá como Nanonets podem nos ajudar a executar tabelas no banco de dados de uma forma mais personalizável e fácil.

Nanonets™ é um OCR baseado em nuvem que pode ajudar a automatizar a entrada manual de dados usando IA. Teremos um painel onde poderemos construir/treinar nossos modelos de OCR em nossos dados e transportá-los em JSON/CSV ou qualquer formato desejado. Aqui estão algumas das vantagens de usar Nanonets como scanner de documentos PDF.

Um dos destaques do Nanonets é a simplicidade que o serviço traz. Pode-se optar por esses serviços sem qualquer experiência em programação e extrair facilmente dados PDF com tecnologia de ponta. A seguir está um breve resumo de como é fácil converter PDF em banco de dados.

- Acesse nanonets.com e registre-se / faça login.

Converta dados PDF em entradas de banco de dados PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

- Após o cadastro, vá para a área “Escolha para começar”, onde você pode utilizar os extratores pré-construídos ou criar um por conta própria usando seu conjunto de dados. Aqui, usaremos o extrator de fatura pré-construído do Invoice.

Converta dados PDF em entradas de banco de dados PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

- Faça upload do PDF das imagens, para realizar a extração dos dados e escolha a opção de extração automática.

Converta dados PDF em entradas de banco de dados PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Passo 4: Crie uma nova integração MySQL para exportar os dados extraídos para o banco de dados. Alternativamente, você pode escolher várias opções com base nos bancos de dados de sua preferência.

Converta dados PDF em entradas de banco de dados PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Estabeleça conexão de dados e clique em adicionar integração. Com isso, os dados serão extraídos e carregados automaticamente em um banco de dados sempre que os arquivos forem carregados. Se você não encontrar as integrações necessárias, você sempre pode usar a API Nanonets e escrever scripts simples para realizar a automação.

Carimbo de hora:

Mais de IA e aprendizado de máquina