2012-01-06 20 views
5

Tengo un PDF de libro escaneado, las imágenes están en formato JBIG2 (B & W). Me gustaría convertir esto en un PDF vectorial, que puedo hacer fácilmente extrayendo las imágenes y convirtiéndolas en gráficos vectoriales PDF con potrace.Comprimir/Optimizar Vectores en PDF

La razón de esto es que quiero que el PDF se muestre sin problemas y rápidamente en un lector de libros electrónicos, como un Kindle. Con JBIG2 no está haciendo esto muy bien. Dependiendo de la configuración, el Kindle no puede mostrar el PDF, e incluso con ese arreglo, lleva mucho tiempo representar cada página. Con un vector PDF, el rendimiento es mucho mejor y la representación es muy nítida.

El problema es que el PDF resultante es gigantesco en el tamaño del archivo. Incluso con las transmisiones gz comprimidas al máximo, es de 300 KB por página (las imágenes originales de JBIG2 eran de 30 KB por página).

¿Hay alguna forma de optimizar los gráficos vectoriales para que el tamaño del archivo sea mucho menor?

Aquí es un segmento de las instrucciones de dibujo vectorial:

0.100000 0.000000 0.000000 0.100000 0.000000 0.000000 cm 
0 g 
8277 29404 m 
8263 29390 8270 29370 8289 29370 c 
8335 29370 8340 29361 8340 29284 c 
8340 29220 8338 29210 8323 29210 c 
8194 29207 8141 29208 8132 29214 c 
8125 29218 8120 29248 8120 29289 c 
8120 29356 8121 29358 8150 29370 c 
8201 29391 8184 29400 8095 29400 c 
8004 29400 7986 29388 8033 29357 c 
8056 29342 8057 29338 8057 29180 c 
8058 29018 l 
8029 29008 l 
8012 29002 8001 28993 8003 28986 c 
h 
f 

yo habría pensado que los números podrían ser comprimidas con mucha facilidad, pero al parecer no. Una página es de 800KB sin comprimir (como arriba) y 300KB de compresión gz. Hubiera pensado que la relación de compresión podría ser mucho mejor, considerando cómo las instrucciones son todos los números en rangos similares.

+1

¿Ha intentado volver a guardar la imagen en CCITT-G4? Debería terminar entre un 10% y un 15% más grande que JBIG y verse fácilmente en todos los espectadores. – BitBank

Respuesta

1

Me temo que no se puede hacer mucho al respecto.

Por supuesto, puede intentar usar la compresión LZW en secuencias de páginas PDF (en lugar de desinflar), pero probablemente no haga mucha diferencia.

Otras sugerencias:

  • imagen de origen Smooth tanto como sea posible/eliminar tantos detalles como sea posible. Esto podría generar menos curvas (es decir, menos datos) durante la conversión.
  • Intenta optimizar los valores en la transmisión de páginas PDF. Por ejemplo, puede tratar de usar combinaciones sofisticadas de operadores de escala/traducir y cambios en los datos. El objetivo aquí es reducir la longitud de los operandos.

Por ejemplo, puede intentar dividir todos los operandos (utilizando enteros, no la división de coma flotante), digamos, 100 y agregar escalas antes del primer operador. Sin embargo, este enfoque probablemente degrada la calidad visual.

Y, por supuesto, si va a hacer esto solo a un puñado de archivos, entonces diría que no vale la pena el tiempo.

+0

Mucho más que un puñado de archivos, pero sí, entiendo tu punto. LZW es aún peor que Deflate. Mi otra opción es dividir la imagen en segmentos e intentar detectar similitudes, implementando de manera efectiva mi propia codificación de símbolos, usando formularios xobjects. Hice algo así antes, pero algo tiende a ir mal en alguna parte. – Alasdair