La biblioteca de Python Camelot extrae datos de tablas de pdf y algunas precauciones en la instalación y uso de la biblioteca de Python camelot

1. Algunas precauciones en la instalación y uso de camelot, la biblioteca de Python

1) El método camelot tiene dos modos de análisis: análisis de flujo (flujo) y análisis de celosía (celosía), en el que el análisis de celosía puede conservar el estilo completo de la tabla, que es mejor que el modo de análisis de flujo para tablas complejas. Al mismo tiempo, el método camelot tiene como valor predeterminado el análisis de celosía (celosía) y, para utilizar este método de análisis, es necesario instalar ghostscript. Por lo tanto, para el camelot instalado solo a través del comando pip, los errores generalmente se informarán cuando el código se esté ejecutando. Necesita descargar ghostscript.exe e instalarlo. Después de la instalación, después de la prueba, no es necesario importar ghostscript en el código.

2) Si el formato de salida camelot se selecciona como formato csv, puede haber un problema de caracteres confusos en chino. Necesita usar un editor de texto para cambiar la codificación del archivo csv exportado al formato ansi.
Si desea guardar directamente en formato excel, necesita el soporte del módulo xlwt. Después de que pip instala xlwt, tables.export ('file name.xls', f = 'excel') se puede exportar a formato excel.

3) Más tarde, se produjo un problema extraño cuando la biblioteca camelot se instaló en otra computadora y se informó un error cuando el programa se estaba ejecutando. La razón se descubrió después de repetidas inspecciones. En primer lugar, en esta computadora, ingresé pip install camelot según mi impresión, y la instalación fue exitosa. Pero el código se ejecuta incorrectamente. Después de consultar, el comando correcto (o versión) es pip install camelot-py [cv].

Así que desinstalé el camelot instalado previamente y luego reinstalé camelot-py [cv] de acuerdo con el comando correcto, pero cuando el código se está ejecutando, indica que hay un problema con la importación de xlwt. Después de verificar en la biblioteca de Python, el xlwt El archivo es normal Lo encontré No encontré el motivo durante mucho tiempo. Más tarde, desinstalé xlwt por separado y luego volví a instalar xlwt con pip, y descubrí que el número de versión de xlwt cambió de 0.7 a 1.3, y todo era normal. Se estima que la versión de camelot se instaló incorrectamente antes, lo que provocó que la versión xlwt instalada por cierto fuera demasiado baja para ser compatible con python3.6.5.

4) Todo era normal al comienzo de camelot, pero de repente se informó un error al procesar un archivo pdf: pdfminer.psparser.SyntaxError: Construcción de diccionario no válida: [/ 'Tipo', / 'Fuente', / 'Subtipo', / 'Type0', / 'BaseFont', / b "b '", / "ABCDEE + \ xcb \ xce \ xcc \ xe5'", / 'Encoding', / 'Identity-H', / 'DescendantFonts', PDFObjRef: 11 , / 'ToUnicode', PDFObjRef: 19]

Después de Baidu, encontré una solución, modifiqué los tres códigos fuente de los módulos pandas y PyPDF2 y volví a la normalidad. Para modificaciones específicas, consulte el documento pdf de la vista previa en línea del procesamiento del rastreador de Python https://link.csdn.net/?target=https%3A%2F%2Fwww.cnblogs.com%2FEeyhan%2Farchive%2F2019% 2F12% 2F30% 2F12111371.html

2. La biblioteca de Python Camelot extrae datos tabulares de PDF.
Enlace original: https://blog.csdn.net/xc_zhou/article/details/99242995

Camelot: una herramienta amigable de extracción de datos de tablas PDF

Una herramienta de línea de comandos de Python que permite a cualquier persona extraer fácilmente datos tabulares de archivos PDF.

Instalar Camelot

¡La instalación es muy simple! Después de instalar las dependencias relacionadas, puede usar pip directamente para instalar.

$ pip install camelot-py

  
   
   
  • 1

Cómo usar Camelot

Usar Camelot para extraer datos de documentos PDF es muy simple

imagen

Por qué usar Camelot

  • Camelot le permite controlar con precisión el proceso de extracción de datos ajustando la configuración
  • La forma incorrecta se puede juzgar en base a los indicadores de precisión y en blanco y descartar en lugar de verificar manualmente
  • Cada tabla de datos es un marco de datos panda, que se puede integrar fácilmente en ETL y en el flujo de trabajo de análisis de datos.
  • Los datos se pueden exportar a varios formatos como CSV, JSON, EXCEL, HTML

Primero, veamos un ejemplo simple: p. Ej., Pdf, todo el archivo tiene solo una página y solo hay una tabla en esta página, como sigue:

9419034-4473cf94547e62f4.png

Utilice el siguiente código de Python para extraer las tablas en el archivo PDF:

import camelot

Extraer tablas de archivos PDF

tablas = camelot.read_pdf ('E: //eg.pdf', páginas = '1', sabor = 'corriente')

Información del formulario

imprimir (tablas)
imprimir (tablas [0])

Datos tabulados

imprimir (tablas [0] .data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

La salida es:

<TableList n=1>
<Table shape=(4, 4)>
[['ID', '姓名', '城市', '性别'], ['1', 'Alex', 'Shanghai', 'M'], ['2', 'Bob', 'Beijing', 'F'], ['3', 'Cook', 'New York', 'M']]

 
  
  
  • 1
  • 2
  • 3

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 (páginas) y el método de análisis de la tabla (hay dos métodos: flujo 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 tratará toda la página PDF como una tabla de forma predeterminada. Si necesita especificar el área en la página de análisis, puede usar el parámetro table_area.

La conveniencia del módulo camelot es que proporciona funciones para convertir directamente los datos extraídos de la tabla en pandas, csv, JSON, html, como tablas [0] .df, tablas [0] .to_csv () funciones, etc. Tomemos el archivo csv de salida como ejemplo:

import camelot

Extraer tablas de archivos PDF

tablas = camelot.read_pdf ('E: //eg.pdf', páginas = '1', sabor = 'corriente')

Convierta los datos de la tabla en un archivo csv

tablas [0] .to_csv ('E: //eg.csv')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

El archivo csv resultante es el siguiente:

Ejemplo 2

En el Ejemplo 2, extraeremos los datos de una tabla en un área determinada de la página PDF. Las páginas (partes) del archivo PDF son las siguientes:

Para extraer la única tabla en toda la página, necesitamos ubicar la posición de la tabla. El sistema de coordenadas del archivo PDF es diferente al de la imagen. Utiliza el vértice de la esquina inferior izquierda como origen, el eje x hacia la derecha y el eje y hacia la parte superior. Las coordenadas del texto en toda la página se puede generar mediante el siguiente código Python:

import camelot

Extraer tablas de PDF

tables = camelot.read_pdf ('G: //Statistics-Fundamentals-Succinctly.pdf', pages = '53 ', taste
=' stream ')

Dibuja las coordenadas del documento PDF y localiza la posición de la mesa

tablas [0] .plot ('texto')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

La salida es:

UserWarning: No tables found on page-53 [stream.py:292]

 
  
  
  • 1

El código completo no encontró la tabla. Esto se debe a que el método de flujo trata la página PDF completa como una tabla de forma predeterminada, por lo que no se encuentra la tabla. Pero la imagen de las coordenadas de la página dibujada es la siguiente:

Comparando cuidadosamente las páginas PDF anteriores, no es difícil encontrar que las coordenadas de la esquina superior izquierda del área correspondiente al formulario 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 completo de Python es el siguiente:

import camelot

Identificar los datos de la tabla en el área especificada

tables = camelot.read_pdf ('G: //Statistics-Fundamentals-Succinctly.pdf', pages = '53
', taste =' stream ', table_area = [' 50,620,500,540 '])

Dibuja las coordenadas del documento PDF y localiza la posición de la mesa

table_df = tablas [0] .df

imprimir (tipo (tabla_df))
imprimir (tabla_df.head (n = 6))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

El resultado de salida es:

<class 'pandas.core.frame.DataFrame'>
         0               1                2           3
0  Student  Pre-test score  Post-test score  Difference
1        1              70               73           3
2        2              64               65           1
3        3              69               63          -6
4        …               …                …           …
5       34              82               88           6

 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

para resumir

Al identificar específicamente la tabla en la página PDF, además del parámetro que especifica el área, también hay parámetros como subíndices y combinaciones de celdas. Para un uso detallado, consulte el sitio web oficial de camelot: https: // camelot-py .readthedocs.io / en / master /

Referencia: https://www.php.cn/python-tutorials-412223.html
https://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=2651380263&idx=1&sn=514485e8c4fe820834bacbccfccfbb4ae9=1164dc96dccfccf1c4a5398d1&sn=514485e8c4fe820834fccbccfbb4ae9&bdc 23 & Srcid = 0520POo6Bt0M0FUTbhnwNptJ # rd

Supongo que te gusta

Origin blog.csdn.net/stay_foolish12/article/details/112506327
Recomendado
Clasificación