Quiero extraer una imagen para cada pregunta en un .pdf (un examen como este ) para que se dividan así:
Entonces, por ejemplo, q1.png para la pregunta 1, como arriba, y nuevamente para la pregunta 2, 3, etc.
Tengo toneladas de estos papeles que necesito dividir en imágenes como esa, y todos deben tener un ancho establecido. Cortarlos manualmente con un software de captura de pantalla llevaría una eternidad.
¿Hay algún software que pueda ayudarme con esto? ¿O un método inteligente o hacerlo más fácil?
Adobe Acrobat DC me permite recortar todas las páginas al ancho y la distancia correctos desde la parte superior de cada página, y puedo guardarlas todas como archivos .jpeg separados; esto es casi lo que necesito, aparte del hecho de que la altura de las preguntas varía. .
Puede usar varias herramientas comunes de Unix para manipular los datos, aunque es posible que el esfuerzo no valga la pena si los archivos PDF originales son todos muy diferentes. Intenté lo siguiente:
Convierta el pdf a PostScript, que es más fácil de manipular usando pdf2ps (parte de ghostscript):
pdf2ps Question-paper.pdf out.ps
Mirando a través de este archivo, puede ver cómo las líneas horizontales (en las que escribir la respuesta) se dibujan con una cadena de subrayados: (_______________________________________________________________________________)
Utilice sed para convertir los subrayados en espacios:
sed <out.ps '/^(___________________________________________/s/_/ /g' >out2.ps
(Intenté eliminar la línea, pero el código PostScript es un poco oscuro y ya no funcionaba, por lo que es más fácil). Ahora tenemos páginas que podemos convertir a imágenes png usando ImageMagick:
convert -background white -alpha remove out2.ps -crop 450x500+40+40 -trim pic%02d.png
Esto genera archivos pic01.png y así sucesivamente, uno por página, recortando solo el rectángulo de tamaño 450x500 y desplazado xy +40+40, y luego recortando el espacio en blanco. Esto deja solo la pregunta visible, o en la página de continuación deja solo el texto: "la pregunta N continúa". Puede detectar estas imágenes no deseadas para eliminar por su pequeño tamaño, que puede obtener de
identify pic*.png
Sin embargo, si sus otros archivos PDF no usan la misma técnica de subrayado simple para completar la página, o si desplazan la página izquierda y la página derecha de manera diferente, etc., tendrá que modificar manualmente los comandos cada vez.
SI todos los documentos tienen solo el número de pregunta en un cierto rango, digamos los primeros 50 píxeles cuando se convierten en una imagen, entonces podría usar ImageMagick y tal vez un poco de secuencias de comandos (yo usaría python ) para:
Si el diseño de los documentos incluye encabezados y pies de página, es posible que deba establecer las áreas que se considerarán, del mismo modo, si hay una página principal, etc., es posible que deba omitir páginas. Mucho depende de cuán consistente sea el diseño de los documentos, si todos son iguales, entonces escribir un guión de este tipo podría valer la pena.
Tenga en cuenta que, en el ejemplo que dio, cada pregunta comienza en una página nueva y puede detectar el inicio de la sección de respuestas a partir de un histograma porque tendrá una altura fija de espacio en blanco (blanco), seguida de una altura estrecha y fija de color negro. - la línea - entonces, si esto es representativo, puede comenzar justo debajo de la parte superior de la página, para omitir el borde, detectar el patrón para la primera línea de respuesta y tener su altura.
Este artículo también cubre una serie de herramientas de Python que también podría considerar usar o simplemente puede dividir sus documentos en páginas como imágenes y usar numpy/scipy para encontrar el inicio/final.
Si, como parece probable a partir de su pregunta, usted trabaja en el mundo académico, puede pedirle a un compañero de trabajo que esté enseñando Python o procesamiento de imágenes, que configure esto como un taller o un pequeño proyecto.