![Eliminar páginas PDF específicas según el contenido](https://rvso.com/image/97238/Eliminar%20p%C3%A1ginas%20PDF%20espec%C3%ADficas%20seg%C3%BAn%20el%20contenido.png)
Tengo más de 50.000 documentos PDF que deben asignarse a cuentas de clientes. Sin embargo, cada PDF contiene páginas que no quiero que el cliente vea (material interno de la empresa), por lo que me gustaría poder eliminar páginas específicas según su contenido ("solo para uso de oficina" que aparece en la página) y guardar el PDF. como un archivo nuevo.
Me siento cómodo con el aspecto de las secuencias de comandos, sólo necesito saber qué software es capaz de realizar esa tarea.
Respuesta1
Hay varias bibliotecas para manipular archivos PDF, incluidos los no mantenidos.pypdfy su tenedorPyPDF2. Puede procesar un archivo página por página, extraer el texto y copiar las páginas cuyo texto sea adecuado.
Ejecuté lo siguiente usando Python3.6 y PyPDF2==1.26.0:
#!/usr/bin/env python3
import re
import sys
from PyPDF2 import PdfFileWriter, PdfFileReader
pdf_in = PdfFileReader(sys.stdin.buffer)
pdf_out = PdfFileWriter()
for p in [pdf_in.getPage(i) for i in range(0, pdf_in.getNumPages())]:
text = p.extractText()
if not re.search(r'for\s+office\s+use\s+only', text, re.I):
pdf_out.addPage(p)
pdf_out.write(sys.stdout.buffer)
Tenga en cuenta que es posible que el texto no aparezca en el documento exactamente como lo desea. En un documento PDF, las líneas, palabras o incluso caracteres pueden aparecer desordenados. En lugar de una secuencia de texto, el documento puede construirse con piezas que aparecen en determinadas coordenadas.
Incluso si el texto está en orden, como suele ser el caso, el texto que abarca varias páginas tendrá un pie de página y un encabezado en el medio. El texto que abarca varias líneas puede tener espacios adicionales alrededor de los saltos de línea. Incluso el texto en las mismas líneas puede tener múltiples espacios entre palabras, debido a la justificación del texto (es por eso que usé \s+
un espacio simple en la expresión regular anterior).
Las herramientas que extraen texto de un PDF intentan reconstruir la página como texto, pero no siempre hacen un trabajo perfecto. Si pyPdf no funciona bien con sus documentos, puede probar otras bibliotecas para extracción de texto; veresteyestehilo para ver algunos ejemplos.
Respuesta2
Una opción sería buscar editores de PDF de línea de comandos como PDFEdit, Pdftk o PDFSaM. pdftotext puede resultar útil como una forma sencilla de identificar los números de página que se van a eliminar.