Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
CONVERTIR PDF A TXT
#1
Photo 
Buen dia comunidad:

Estoy queriendo compilar un codigo para convertir de PDF a texto pero al momento de hacer la conversion el resultado no sale como espero, he aplicado diversas
bibliotecas como pytesseract, pdfminner pdftotext, pdf2image y Open CV, pero todas extraen el texto de manera incompleta o con errores. Los dos ultimos codigos que he usado son estos de aca:

CODIGO 1
import pytesseract
from pdf2image import convert_from_path
# Configurar pytesseract
pytesseract.pytesseract.tesseract_cmd = "/usr/bin/tesseract"
pytesseract.pytesseract.tessdata_dir_config = '/usr/share/tesseract-ocr/4.00/tessdata'
# Ruta del archivo PDF
pdf_path = "/content/drive/MyDrive/PDF/file.pdf"  # Asegúrate de cambiar 'tu_archivo.pdf' por el nombre real de tu archivo
# Convertir PDF a imágenes de alta calidad
images = convert_from_path(pdf_path, dpi=300, fmt="PNG", thread_count=4)
# Extraer texto de las imágenes
texts = [pytesseract.image_to_string(img, lang="eng", config="--oem 1 --psm 11"for img in images]
# Imprimir el texto extraído
for i, text in enumerate(texts):
    print(f"Texto de la página {i + 1}:\n{text}\n")

CODIGO 2
from pdfminer.high_level import extract_text
def convert_pdf_to_txt(path):
    text = extract_text(path)
    return text
# Cambia la ruta del archivo según la ubicación de tu archivo PDF
pdf_path = '/content/drive/MyDrive/PDF/file.pdf'
# Convertir el PDF a texto
texto = convert_pdf_to_txt(pdf_path)
# Imprimir el texto en la consola
print(texto)



Sin embargo cuando uso los conversores en linea de PDF a Texto la conversacion sale muy bien casi perfecta sin los errores que presento en ambos codigos. Aqui les adjunto el pdf que quiero convertir a texto y los resultados que obtengo de ambos codigos cuando intento convertir mi archivo.


Archivos adjuntos
.pdf   file.pdf (Tamaño: 484,88 KB / Descargas: 1)
.txt   codigo1.txt (Tamaño: 11,9 KB / Descargas: 2)
.txt   codigo2.txt (Tamaño: 11,94 KB / Descargas: 2)
Responder
#2
Hola, bienvenido/a.

Sinceramente el resultado me parece bastante bueno. Es lógico que el primer código tenga algunos errores más porque primero estás convirtiendo el PDF a una imagen, y luego aplicando CV a esa imagen para reconocer texto.

En particular, ¿en qué parte del PDF encontrás problemas?

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(11-04-2023, 01:57 PM)Francisco escribió: Hola, bienvenido/a.

Sinceramente el resultado me parece bastante bueno. Es lógico que el primer código tenga algunos errores más porque primero estás convirtiendo el PDF a una imagen, y luego aplicando CV a esa imagen para reconocer texto.

En particular, ¿en qué parte del PDF encontrás problemas?

Saludos

Hola Francisco,

Gracias por tu resuesta. Mira sucede que esa conversion no esta extrayendo la informacion de mayor relevancia que me servira para explotarla luego. Por ejemplo el texto me bota

nate. 10 / 18 / 2021 , en vez de date 10/18/2021
email: no me bota nada cuando si existe informacion
mas abajo hay otro dato
pate: 10 / 18 / 2021 en vez que sea date 10/18/2021

Tambien he intentado extraer esos datos a traves de listas pero cuando extrae las lista me bota igual con esos errores y sin toda la informacion completa. SI te das cuenta en el archivo adjunto la conversion sale mucho mejor. En cambio cuando hago la conversion desde una pagina en linea no sucede eso, todo sale bien y quisiera saber que bibliotecas usan o como lo estan convirtiendo porque ya no se que mas hacer :\


Archivos adjuntos
.txt   file.txt (Tamaño: 11,75 KB / Descargas: 1)
Responder
#4
Es difícil saber qué bibliotecas usan esos sitios. De cualquier manera, creo que el segundo código funciona bastante bien. La fecha aparece con espacios porque así está en el documento. Eso lo podés corregir fácilmente con un código de Python:

Código:
>>> texto = "10 / 18 / 2021"
>>> texto.replace(" / ", "/")
'10/18/2021'

La dirección de correo también aparece, pero más abajo. No conozco las internas del formato PDF, así que no sé por qué no aparece en el lugar correcto. Supongo que debe tener que ver con las distintas capas o fuentes del archivo. Pero creo que son todas cosas que se pueden ir corrigiendo con Python luego de hacer la conversión.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Hola Francisco,Ese ultimo archivo texto que viste fue el resultado del conversor en linea que use para comparar resutlado mas no es resultado de mi codigo, el texto que bota mi codigo no me arroja los datos completos tal cual te adjunto en estos dos archivos txt. Por eso queria saber como podria ajustar mi codigo para que el resultado salga completo de formalegible puesto que este codigo se usara para convertir diversos pdf con el mismo formato o diferente de manera masiva y si esta fallando con este primer PDF con los demas podria suceder lo mismo. Por eso queria una ayuda para saber la manera de poder ajustarlo y que me salga en un formato estandar tal cual lo hacen los conversores en linea o algo similar. El primero codigo si funciona casi bien pero hay datos como nate. 10 / 18 / 2021 , en vez de date 10/18/2021 email: no me bota nada cuando si existe informacion mas abajo hay otro dato pate: 10 / 18 / 2021 en vez que sea date 10/18/2021Esto no me permite poder trabajar de forma unica con el codigo para que sea aplicable otros pdf queposiblemente tienen formatos distintos. Por favor, espero tu apoyo con este tema, me ayudarias un monton. Gracias.


Archivos adjuntos
.txt   code1.txt (Tamaño: 11,9 KB / Descargas: 1)
.txt   code2.txt (Tamaño: 11,94 KB / Descargas: 1)
Responder
#6
Hola.

Me refería a esos mismos archivos que subiste en el primer mensaje. El segundo de ellos tiene un nivel de certeza bastante mayor. E insisto que el resto se puede ir corrigiendo con código de Python, como en el ejemplo que puse en el mensaje anterior. No hay mucho más para hacer. La alternativa es investigar otras librerías, tal vez de otros lenguajes, o armar tu propio código para extraer los datos, pero no debe ser nada fácil. Probablemente la página que usaste tenga su propio código para realizar el trabajo.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 4 invitado(s)