Cómo utilizar Python para capturar datos tabulares de archivos PDF (ejemplo de código)
pip install camelot-pycamelot La documentación oficial del módulo camelot se encuentra en https://camelot-py.readthedoc. .... A continuación se mostrará cómo utilizar el módulo camelot para capturar 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, como se muestra a continuación:
<. p>Usar Con el siguiente código Python, puede extraer tablas de archivos PDF:importar camelot
# Extraer tablas de archivos 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
la salida de print(tables[0].data) es:
lt; =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 '] ] Al analizar el código, camelot.read_pdf() es la función de camelot para extraer datos de la tabla. Los parámetros de entrada son la ruta del archivo PDF, el número de página (número de páginas) y el método de análisis de la tabla (hay dos métodos: corriente 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 de resolución en la página, puede usar el parámetro table_area.
La conveniencia del módulo camelot es que proporciona funciones para extraer directamente datos de tablas en pandas, csv, JSON y html, como la función tablas[0].df, tablas[0].to_csv(), etc. Tomemos el archivo csv de salida como ejemplo:
importar camelot
# Extraer tablas de archivos PDF
tables = camelot.read_pdf('E:/ / eg.pdf', páginas='1', sabor='stream')
# Convertir datos de tabla a archivo csv
tables[0].to_csv('E: // eg.csv') El archivo csv resultante es el siguiente:
¿Ejemplo 2? En el Ejemplo 2, extraeremos datos tabulares de una región de una página PDF. Las páginas (partes) del archivo PDF son las siguientes:
Para extraer la única tabla en toda la página, necesitamos encontrar dónde se encuentra 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. Puede usar el siguiente código Python. para generar las coordenadas de toda la página de texto:
importar camelot
# Extraer tablas de PDF
tables = camelot.read_pdf('G:// Statistics-Fundamentals-Succinctly.pdf', pages='53 ',
sabor='stream')
# Dibuja las coordenadas del documento PDF y ubica la tabla
tables[0].plot('text' ) Salida:
UserWarning: Tabla no encontrada en la página 53 [stream.py: 292] El código completo no encuentra la tabla, esto es porque el método de transmisión trata toda la página PDF como una tabla de forma predeterminada. Esto se debe a que el método de transmisión trata toda la página PDF como una tabla de forma predeterminada, por lo que no se encuentra la tabla. Sin embargo, la imagen de las coordenadas de la página se dibuja de la siguiente manera:
Al comparar cuidadosamente la página PDF anterior, no es difícil encontrar que las coordenadas de la esquina superior izquierda del área correspondiente de la tabla son (50, 620) y las coordenadas de la esquina inferior derecha son (500, 540).
Agregamos el parámetro table_area en la función read_pdf(). El código Python completo es el siguiente:
importar camelot
# Identificar datos de la tabla en el área especificada
factory='stream', table_area=['50, 620, 500, 540'] )
#Dibuja las coordenadas del documento PDF para determinar la ubicación de la tabla
table_df = tablas[0].df
print( type(table_df))
print(table_df.head(n=6)) La salida es:
lt; class 'pandas.core.Frame.Data.Data.Frame. Data.Data.Data.Data.Data.Data.DataFrame.DataFrame'gt;
0 1 2 3
0 Diferencia de puntuación previa y posterior a la prueba del estudiante p>
1 1 70 73 3
2 2 64 65 1
3 3 69 63 -6
4
5 34 82 88 6 Resumen en detalle En la tabla que identifica la página PDF, además del parámetro para especificar el área, también hay parámetros como arriba, abajo, izquierda y derecha, combinación de celdas, etc. Para un uso detallado , consulte la URL en la documentación oficial de camelot: https://camelot-py.readthedoc....