CodeGym /Cursos /Python SELF PT /Extraindo texto de documentos PDF para análise de dados

Extraindo texto de documentos PDF para análise de dados

Python SELF PT
Nível 43 , Lição 2
Disponível

1. Extraindo texto

Praticamente todo mundo já passou pela situação de precisar de informações de um documento PDF, seja um relatório contábil, uma pesquisa ou até mesmo aquele e-book favorito. Mas o que fazer se precisar extrair dados automaticamente ao invés de copiar manualmente? É aqui que o Python e sua incrível biblioteca PyPDF2 entram em cena.

Passos principais para extração de texto

Para extrair texto de um PDF com sucesso, siga alguns passos simples:

  1. Ler o arquivo PDF.
  2. Fazer parsing do conteúdo do PDF.
  3. Extrair o texto para análise posterior.

2. Ler e fazer parsing de arquivos PDF

Vamos ver como abrir e ler um documento PDF no Python. Primeiro, precisamos importar o PyPDF2:

Python

import PyPDF2

Agora, vamos abrir o documento PDF. Suponha que temos um arquivo sample.pdf que queremos analisar. Vamos carregá-lo e descobrir quantas páginas ele possui.

Carregar o arquivo PDF

Python

# Abrindo o arquivo PDF
with open("sample.pdf", "rb") as pdf_file:
    # Criando o objeto PDF Reader
    pdf_reader = PyPDF2.PdfReader(pdf_file)

    # Obter o número total de páginas
    num_pages = len(pdf_reader.pages)
    print(f"Número total de páginas no documento: {num_pages}")

Extraindo texto

Agora que o documento PDF está aberto, vamos extrair o texto dele. Para isso, precisamos:

  • PdfReader abre o arquivo PDF para leitura.
  • Usamos um loop for para iterar por todas as páginas e chamar extract_text() para extrair o texto.
  • O texto extraído é salvo na variável text e pode ser exibido ou processado.

Eis um exemplo de como isso pode ser feito:

Python

import PyPDF2

# Abrindo o arquivo PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    # Extraindo texto de cada página
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

print(text)

Extraindo texto de páginas específicas

E se precisarmos de texto apenas de uma página específica? Por exemplo, suponha que queremos extrair texto apenas da terceira página. Isso é feito assim:

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    page = pdf_reader.pages[2]  # Extrair texto da terceira página (índice 2)
    text = page.extract_text()

print(text)

Esse exemplo permite extrair texto apenas da terceira página, o que pode ser útil se o documento tiver muitas páginas e você quiser limitar o processamento. O PyPDF2 utiliza a numeração de páginas começando do índice 0.

3. Automatizando o processamento de texto a partir de PDF

Depois de extrair texto de um PDF, ele pode ser analisado e processado para uma análise mais aprofundada de dados. PyPDF2 permite automatizar esse processo, o que é especialmente útil ao lidar com grandes volumes de documentos.

Extraindo e salvando texto em um arquivo separado

Para facilitar a análise posterior, é possível salvar o texto extraído em um arquivo de texto. Isso simplifica seu processamento futuro.

Python

import PyPDF2

# Abrindo o arquivo PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

# Salvando o texto extraído em um arquivo
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
    text_file.write(text)

Processamento e análise do texto extraído

Depois de extrair o texto, ele pode ser analisado usando Python. Para isso, frequentemente utilizamos bibliotecas como re (expressões regulares), nltk (Natural Language Toolkit) ou pandas.

Contagem de palavras e busca por frases-chave

Suponha que temos um arquivo de texto extracted_text.txt, e queremos contar o número de palavras ou frases específicas no documento.

Python

import re

# Abrindo o texto extraído
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
    text = text_file.read()

# Procurando e contando palavras-chave
keywords = ["relatório", "dados", "análise"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}

print("Frequência de palavras-chave:", keyword_counts)

Aqui:

  • Abrimos o texto salvo.
  • Usamos expressões regulares para contar palavras-chave (ignorando maiúsculas/minúsculas).
  • Obtemos o número de ocorrências de cada palavra-chave.

4. Vantagens e limitações do PyPDF2

Vantagens:

  • Fácil de usar para extração básica de texto e processamento de páginas.
  • Suporte para operações principais: leitura de texto, combinação e separação de documentos.
  • Fácil integração com outras bibliotecas Python.

Limitações:

  • O PyPDF2 nem sempre extrai texto corretamente de PDFs complexos com formatos multi-níveis, tabelas e imagens.
  • Não suporta extração direta de imagens e tabelas.
  • Não lida com arquivos criptografados ou protegidos por senha (embora seja possível tentar remover a proteção caso a senha seja conhecida).
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION