samedi 17 juillet 2010

comparatif de quelques extracteurs de PDF écrits en java


Objectif

Comparer 3 extracteurs de PDF écrits en java : pdfbox 1.2.0, pdfrenderer et bfopdf.

Introduction

Toujours pour récupérer des données issues de pdf, il faut extraire des images ou plus généralement des pages à partir des pages de pdf. Pour ce faire, j’ai testé 3 solutions gratuites permettant de le faire : pdfbox 1.1.0 puis 1.2.1 puis finalement 1.2.0, pdfrenderer et un produit contraint gratuitement : bfopdf.
40 pdf téléchargés et 8 pdf générés avec PDFCreator ont été utilisés pour les tests : 40 pdf issus des sites revell et monogram représentant des notices d’instructions de maquettes plastiques, plus 7 fichiers générés par PDFCreator à partir d’un même fichier, un arc-en-ciel initialement en png,  converti en  jpg, gif, bmp 1 bit ( 2 couleurs), bmp 4 bits ( 16 couleurs ), bmp 8 bits ( 256 couleurs ) et 24 bits ( « couleurs » ), et un utilisant toutes les images.

Protocole de tests

  • Télécharger les jar depuis les sites respectifs
  • Créer un projet eclipse avec 3 packages, pour chaque package,
  • Créer une classe qui liste les pdf du répertoire en question et qui appelle une classe ( thread ) d’extraction des pages ( png, rgb ou argb, 72 dpi ) généralement trouvée dans les cookbooks, tutoriaux et exemples. Ceci est dû à la non-gestion des exceptions java dans certains cas.
  • Analyser les résultats qualitativement et quantitativement selon le tableau ci-dessous

Critère
Pdfbox 1.2.0
pdfrenderer
Bfopdf 2.1.11
Observation
Vitesse d’exécution
19
11
10
Minutes
Pages générées
491
433
503
Certaines l’étant partiellement suite aux cas non gérés dans la norme pdf ( ps compressé ) ou des exceptions
Précision des dessins



Bfopdf ne génère qu’en 72 dpi, pdfbox et pdfrenderer, paramétrables,  ont été contraints à ce facteur limitant
Png ok
Ok
Ok
Ok

Jpg ok
Ok
Ok
Ok

Gif ok

Ok
Ok

Bmp 2 couleurs

Ok
Ok

Bmp 16 couleurs

Ok
Ok

Bmp 256 couleurs

Ok
Ok

Bmp couleurs
Ok
Ok
Ok

Taille d’une page de référence sortie en png
72
177
153
Ko ( en rgb ou en argb )
Argb = rgb + luminosité
Page 11 de la notice du t-80 ud référencé 03078.pdf chez revell
595 * 842 pixels
Qualité des textes
moyenne
ok
ok
En 72 dpi. Ils sont mieux écrits en 98 dpi.
Qualité des couleurs
Contrastés
Grillage trop contrasté
Trop contrasté manque de détails
Grillage monochrome noir
Manque de contraste
Grillage acceptable
Pour les détails, voir comment ressort le grillage du moteur à l’arrière de la tourelle, le grillage ressort différemment
Utilisabilité de l’image
ok
ok
Limitée …
Un gros « DEMO » rose s’affiche en surimpression avec la version gratuite. A traiter pour l’enlever. A voir pour le faire.
Rendu des dessins incomplets
Pavés noirs, images en négatif, des pixels défectueux
Pages vierges, dessins absents
R.A.S !

Sources fournis
oui
oui
Non

Verbosité des messages d’erreurs
très verbeux
Assez peu verbeux
Peu verbeux
Souvent les messages annoncent les fonctions PS non gérées ou les traces d’erreur java

Quelques compléments

  • La dernière version stable de pdfbox au moment de l’écriture de ce billet et buggée. Elle est sensée corrigée la version 1.2.0 pour du texte mais elle restitue nettement moins d’images, d'où l’utilisation de l’avant dernière version.
  • 72 dpi est la définition sur Mac, les PC utilisent 98 dpi, et pdfbox est bien meilleur avec une plus grande définition.
  • Bfopdf indique sur son site que le tiff en 200 dpi monochrome est excellent pour être faxé
  • Pdfrenderer ne fournit pas de n° de version pour ses jars. Au mieux, nous avons accès au svn de l’application.
  • Il faut utiliser une poignée de jar externes en plus de pdfbox lui-même pour utiliser les classes. Il y a peut être une incompatibilité de versions qui expliquerait les défaillances de pdfbox 1.2.1
  • Pdfrenderer, qui ne fait que visualiser des pdf, peut être utilisée avec des applets avec l’api Graphics2D.

Pour approfondir les sujets

Pdf guide de référence : http://www.adobe.com/devnet/pdf/pdfs/PDFReference.pdf ( entre autre pour le codage des opérateurs )

pdfbox
pdfrenderer
bfopdf




Aucun commentaire:

Enregistrer un commentaire