¿Hay alguna forma de convertir PDF a Json?

Descargo de responsabilidad: soy el fundador de Docparser.com, una solución de software especializada en la transformación de documentos semiestructurados (facturas, pedidos de compra, informes, …) en datos estructurados como JSON, CSV, XML.

Tiene básicamente dos problemas diferentes aquí para resolver:

  • Primero, necesita extraer datos de texto de sus archivos PDF
  • En segundo lugar, probablemente desee convertir el texto extraído en campos de datos individuales (Título, Título, Texto, Fecha, Número de referencia, …) que puede usar para construir su objeto de datos JSON

Extraer texto de archivos PDF

Primero, debemos verificar si sus archivos PDF contienen datos de texto o si consisten en imágenes escaneadas. La forma en que lo hacemos en Docparser es verificar si podemos extraer datos de texto y canalizar los archivos a través de una biblioteca OCR si no se devuelve ningún texto.

En cualquier caso, recomendaría confiar en las utilidades de línea de comandos de Linux. Si bien también puede encontrar una biblioteca de Python, los comandos de Linux generalmente funcionan mucho mejor en mi experiencia.

En caso de que necesitemos manejar imágenes escaneadas, usamos un sistema OCR para convertirlas en archivos PDF “buscables”. Dichos archivos PDF contienen las imágenes escaneadas, así como el texto oculto devuelto por el OCR.

Una vez que esté seguro de que el archivo PDF contiene datos de texto, puede usar la herramienta de línea de comandos de Linux PdfToText con la opción ‘- diseño’. A continuación, debe tener una representación de texto plano de su archivo PDF que tiene (casi) el mismo diseño.

Convertir texto extraído en datos estructurados

Este es difícil de responder sin conocer su caso de uso específico. Convertir texto no estructurado o semiestructurado en un objeto JSON puede ser fácil, desafiante o simplemente imposible. Realmente depende del tipo de datos con los que está tratando y de cuán granular debe ser la salida.

En Docparser desarrollamos un conjunto de herramientas que pueden ayudarlo a transformar documentos PDF como facturas, pedidos de compra, pedidos de entrega, etc. en objetos de datos JSON de grano fino sin ningún tipo de codificación. Si esto es algo que le interesaría, estaré encantado de guiarlo a través de nuestra prueba gratuita.

PDF es un formato binario estructurado para almacenar contenido semánticamente rico que consiste en texto, vectores, imágenes, objetos 3D, formularios, anotaciones y más. Todo lo cual está completamente documentado en ISO 32000–1: 2008

JSON es solo una serialización de un objeto Javascript.

Entonces, ¿cómo ves los dos mapas conceptualmente entre sí?

Convertir PDF a JSON

Había estado en una posición en la que debía extraer ciertos textos de alrededor de 1000 archivos PDF para producir un solo archivo CSV . Me pagaron por hacerlo, pero he hecho públicos los códigos. Supongo que hay una serie de archivos PDF del mismo formato y son claros. En el caso de las preguntas, en lugar de CSV, se espera que la salida sea JSON. Por lo tanto, mantener un diccionario global y actualizarlo con texto raspado y finalmente escribir en un archivo como json sería un camino a seguir.

Idea en resumen

  • Use glob para iterar sobre cada nombre de archivo con extensión pdf (por ejemplo: * .pdf )
  • Abra un archivo de texto en modo de escritura (sobrescriba este archivo en particular en cada iteración).
  • Use el subproceso para enviar el comando menos nombre de archivo y almacene la salida del comando, que es el texto sin procesar en el archivo de texto anterior que mantuvo. (Utilice el subproceso ‘ Popen y navegue por el stdout hasta el puntero del archivo ).
  • Abra el archivo de texto en modo de lectura donde el contenido del pdf ya está almacenado. Extraiga los textos que necesite, ya sea mediante expresiones regulares o iterando a través de cada línea (lo que sea mejor en su escenario).
  • Actualice el diccionario con el contenido extraído
  • Repite el proceso
  • Use el módulo json para volcar el diccionario en un archivo json o si es parte de una aplicación web, arroje la respuesta json .

Aquí hay un fragmento de código para mi caso donde procesé archivos PDF para producir un solo archivo CSV . También es posible que desee verificar otras piezas de automatización en mi perfil de github

” ‘

Autor: Bhishan Bhandari

[correo electrónico protegido]

skype: vsun.eror
” ‘

subproceso de importación
importación glob
tiempo de importación
importar csv
csvwriter = csv.writer (archivo (‘final.csv’, ‘wb’))
csvwriter.writerow ([‘Descripción’, ‘Retiros’, ‘Depósitos’, ‘Fecha’, ‘Saldo’])

def parse_pdf_buffer (buffer_file):
con abierto (buffer_file, ‘rb’) como f:
all_content = f.readlines ()
para cada_línea en todo_contenido [26:]:
desc_part = each_line [: 40]
retirada_parte = cada_línea [40:70]
deposit_part = each_line [70:95]
date_part = each_line [95: 103]
balance_part = each_line [103:]
descripción = “” .join (desc_part.split ())
retiros = “” .join (retirew_part.split ())
deposit = “” .join (deposit_part.split ())
date = “” .join (date_part.split ())
balance = “” .join (balance_part.split ())
csvwriter.writerow ([descripción, retiros, depósitos, fecha, saldo])

def read_pdf_file (nombre_archivo):
imprimir nombre_archivo
tratar:
fileptr = abierto (‘pdfbuffer.txt’, ‘wb’)
command_out = subprocess.Popen ([‘menos’, nombre_archivo], stdout = fileptr, stderr = subprocess.STDOUT)
time.sleep (2)
parse_pdf_buffer (‘pdfbuffer.txt’)
excepto:
print “error para archivo”, nombre_archivo

def main ():
para file_name en glob.glob (“*. pdf”):
read_pdf_file (nombre_archivo)

if __name__ == ‘__main__’:
principal()

Encontré esto en Github en algún momento cuando estaba navegando.

flexpaper / pdf2json

Aunque no lo he probado, creo que debería funcionar. Instalación y trabajo bastante sencillos. Espero que esto ayude

No.

convertir pdf a json