Cómo rastrear datos tabulares de archivos PDF con Python (ejemplo de código)
Lo que este artículo le ofrece es cómo Python puede rastrear datos de tablas desde archivos PDF (ejemplos de código). Los amigos que lo necesiten pueden consultarlo. ayudó.
Este artículo mostrará un rastreador ligeramente diferente.
En el pasado, nuestros rastreadores rastreaban datos de Internet, porque las páginas web generalmente están escritas en códigos HTML, CSS y JavaScript. Por lo tanto, existe una gran cantidad de tecnologías maduras para rastrear diversos datos en la web. páginas. Esta vez, los documentos que necesitamos rastrear son archivos PDF. Este artículo mostrará cómo utilizar el módulo camelot de Python para rastrear datos tabulares de archivos PDF.
En nuestra vida diaria y en nuestro trabajo, los archivos PDF son sin duda uno de los formatos de archivo más utilizados. Podemos ver este formato de archivo en todo, desde libros de texto y material didáctico hasta contratos y documentos de planificación. Pero cómo extraer tablas de archivos PDF es un gran problema. Porque no existe una representación interna en PDF para representar una tabla. Esto hace que los datos tabulares sean difíciles de extraer para su análisis. Entonces, ¿cómo rastreamos los datos de las tablas desde PDF?
¡La respuesta es el módulo camelot de Python!
camelot es un módulo de Python que permite a cualquiera extraer fácilmente datos tabulares de archivos PDF. Puede utilizar el siguiente comando para instalar el módulo camelot (la instalación lleva mucho tiempo):
pip install camelot-pyLa dirección de documentación oficial del módulo camelot es: https://camelot-py. lee el documento....
A continuación se mostrará cómo utilizar el módulo camelot para rastrear datos tabulares de archivos PDF.
Ejemplo 1 Primero, veamos un ejemplo simple: por ejemplo, pdf, el archivo completo tiene solo una página y solo hay una tabla en esta página, de la siguiente manera:
Utilice el siguiente código Python. Puede extraer las tablas del archivo PDF:
importar camelot
# Extraer tablas del archivo PDF
tables = camelot. read_pdf('E:/ /eg.pdf', páginas='1', sabor='stream')
# Información de la tabla
imprimir(tablas)
print(tables[ 0])
# Datos de la tabla
El resultado de salida de print(tables[0].data) es:
lt; TableList n=1gt;
lt;Forma de la tabla=(4, 4)gt;
[['ID', 'Nombre', 'Ciudad', 'Género'], ['1', 'Alex', 'Shanghai', 'M'], ['2', 'Bob', 'Beijing', 'F'], ['3', 'Cook', 'Nueva York', 'M']] Código de análisis, camelot.read_pdf() es la función de camelot para extraer datos de una tabla. Los parámetros de entrada son la ruta del archivo PDF, el número de página (páginas) y el método de análisis de la tabla (hay dos métodos). , arroyo y celosía). Para el método de análisis de tablas, el método predeterminado es celosía y el método de flujo analizará toda la página PDF como una tabla de forma predeterminada. Si necesita especificar el área en la página analizada, puede usar el parámetro table_area.
El módulo camelot también es conveniente porque proporciona funciones para convertir directamente los datos de la tabla extraídos a pandas, csv, JSON y html, como tablas[0].df, tablas[0]. ) función, etc. Tomemos como ejemplo la salida de un archivo csv:
importar camelot
# Extraer tablas de archivos PDF
tables = camelot.read_pdf('E: //por ejemplo, .pdf', páginas='1', sabor='stream')
# Convertir datos de la tabla a un archivo csv
tables[0].to_csv('E: // eg.csv') El archivo csv obtenido es el siguiente:
Ejemplo 2 En el Ejemplo 2, extraeremos los datos de una tabla en un área determinada de la página PDF. La página (parte) del archivo PDF es la siguiente:
Para extraer la única tabla en toda la página, necesitamos ubicar la ubicación de la tabla. El sistema de coordenadas del archivo PDF es diferente al de la imagen. Toma el vértice de la esquina inferior izquierda como origen, el eje x hacia la derecha y el eje y hacia arriba. Se puede generar una página completa mediante el siguiente código Python:
importar camelot
# Extraer tablas de PDF
tables = camelot.read_pdf('G:// Statistics-Fundamentals-Succinctly.pdf', pages='53',
flavour='stream')
# Dibuje las coordenadas del documento PDF y ubique la ubicación de la tabla p>
tables[0].plot('text') salida El resultado es:
Advertencia de usuario: No se encontraron tablas en la página 53 [stream.py: 292] No se encontró el código completo la tabla. Esto se debe a que el método de flujo trata toda la página PDF como una tabla de forma predeterminada, por lo que no se encontró. Pero la imagen de las coordenadas de la página dibujada es la siguiente:
Comparando cuidadosamente la página PDF anterior, podemos encontrar fácilmente que las coordenadas de la esquina superior izquierda del área correspondiente a la tabla son (50, 620 ), y las coordenadas de la esquina inferior derecha son (500, 540).
Agregamos el parámetro table_area a la función read_pdf() El código Python completo es el siguiente:
importar camelot
# Identificar datos de la tabla en el área especificada
sabor='stream', table_area=['50, 620, 500, 540'] )
# Dibuja las coordenadas del documento PDF y ubica la tabla
table_df = tablas[0].df
print(type(table_df ))
El resultado de salida de print(table_df.head(n=6)) es:
lt; class 'pandas.core.frame.DataFrame'gt;
0 1 2 3
0 Estudiante Puntuación previa a la prueba Puntuación posterior a la prueba Diferencia
1 1 70 73 3
2 2 64 65 1
3 3 69 63 -6
4
5 34 82 88 6 Resumen Al identificar específicamente tablas en páginas PDF, además del parámetro que especifica el área También hay superíndices y subíndices, fusión de celdas y otros parámetros. Para un uso detallado, consulte la URL del documento oficial de Camelot: https://camelot-py.readthedoc....