fccoelho aider (anthropic/claude-sonnet-4-20250514) commited on
Commit
7ceeb49
·
1 Parent(s): e998be0

refactor: substituir PyPDF2 por PyMuPDF para extração de texto de PDF

Browse files

Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) <aider@aider.chat>

Files changed (2) hide show
  1. app.py +15 -7
  2. pyproject.toml +1 -1
app.py CHANGED
@@ -1,5 +1,5 @@
1
  import gradio as gr
2
- import PyPDF2
3
  import pandas as pd
4
  import openai
5
  import os
@@ -11,20 +11,28 @@ import re
11
  def extract_pdf_text(pdf_file):
12
  """Extrai texto e metadados básicos do PDF"""
13
  try:
14
- pdf_reader = PyPDF2.PdfReader(pdf_file)
 
15
 
16
  # Extrair texto de todas as páginas
17
  full_text = ""
18
- for page in pdf_reader.pages:
19
- full_text += page.extract_text() + "\n"
 
20
 
21
  # Extrair metadados básicos
 
22
  metadata = {
23
- "num_pages": len(pdf_reader.pages),
24
- "title": pdf_reader.metadata.get('/Title', 'Não disponível') if pdf_reader.metadata else 'Não disponível',
25
- "author": pdf_reader.metadata.get('/Author', 'Não disponível') if pdf_reader.metadata else 'Não disponível'
 
 
26
  }
27
 
 
 
 
28
  return full_text, metadata
29
  except Exception as e:
30
  return None, {"error": f"Erro ao processar PDF: {str(e)}"}
 
1
  import gradio as gr
2
+ import fitz # PyMuPDF
3
  import pandas as pd
4
  import openai
5
  import os
 
11
  def extract_pdf_text(pdf_file):
12
  """Extrai texto e metadados básicos do PDF"""
13
  try:
14
+ # Abrir o PDF com PyMuPDF
15
+ doc = fitz.open(stream=pdf_file, filetype="pdf")
16
 
17
  # Extrair texto de todas as páginas
18
  full_text = ""
19
+ for page_num in range(len(doc)):
20
+ page = doc.load_page(page_num)
21
+ full_text += page.get_text() + "\n"
22
 
23
  # Extrair metadados básicos
24
+ metadata_dict = doc.metadata
25
  metadata = {
26
+ "num_pages": len(doc),
27
+ "title": metadata_dict.get('title', 'Não disponível') if metadata_dict.get('title') else 'Não disponível',
28
+ "author": metadata_dict.get('author', 'Não disponível') if metadata_dict.get('author') else 'Não disponível',
29
+ "subject": metadata_dict.get('subject', 'Não disponível') if metadata_dict.get('subject') else 'Não disponível',
30
+ "creator": metadata_dict.get('creator', 'Não disponível') if metadata_dict.get('creator') else 'Não disponível'
31
  }
32
 
33
+ # Fechar o documento
34
+ doc.close()
35
+
36
  return full_text, metadata
37
  except Exception as e:
38
  return None, {"error": f"Erro ao processar PDF: {str(e)}"}
pyproject.toml CHANGED
@@ -6,7 +6,7 @@ readme = "README.md"
6
  requires-python = ">=3.12"
7
  dependencies = [
8
  "gradio>=4.0.0",
9
- "PyPDF2>=3.0.0",
10
  "pandas>=2.0.0",
11
  "openai>=1.0.0",
12
  "python-dotenv>=1.0.0"
 
6
  requires-python = ">=3.12"
7
  dependencies = [
8
  "gradio>=4.0.0",
9
+ "pymupdf>=1.23.0",
10
  "pandas>=2.0.0",
11
  "openai>=1.0.0",
12
  "python-dotenv>=1.0.0"