Si vous numérisez une page contenant du texte dans un PDF et exécutez une application OCR dessus, le texte sera ajouté à la page, mais le "mode de rendu du texte" est défini sur invisible. Il est là, mais il n'est pas rendu à l'écran (ou sur papier s'il est imprimé). Ce que vous voyez ou imprimez est l'image numérisée d'origine.
Comment rendre visible le texte invisible?
Eh bien, nous pouvons éditer le PDF ... Le code PDF pour définir le rendu du texte sur invisible est le suivant:
3 Tr
Vous ne trouvez pas (encore) cette chaîne dans l'original from_abbyy.pdf ni dans from_ghostscript.pdf car certaines parties des PDF sont compressées. Nous les décompressons donc autant que possible à l'aide de qpdf
:
qpdf \
--qdf \
from_abbyy.pdf \
qdf--from_abbyy.pdf
qpdf \
--qdf \
after_ghostscript.pdf \
qdf--after_ghostscript.pdf
Maintenant, nous pouvons trouver la chaîne ci-dessus facilement (et il n'y a qu'une seule occurrence dans chaque fichier).
Passons à l'un des modes visibles de rendu de texte. Dans l'ensemble, nous pouvons choisir parmi ces 8 modes de rendu de texte:
0 - fill glyph shapes
1 - stroke glyph shapes
2 - fill, then stroke glyph shapes
3 - neither fill nor stroke glyph shapes (invisible)
4 - fill and add to path for clipping glyph shapes
5 - stroke glyph shapes and add to path for clipping
6 - fill, then stroke glyph shapes and add path for clipping
7 - add glyph shapes to path for clipping
Si j'utilise le mode "remplissage", le texte de l'OCR ne sera probablement pas aussi bon au-dessus de l'image de numérisation sous-jacente. Je préfère donc la variante "course". Donc je change simplement la ligne ci-dessus pour lire
1 Tr
En regardant ce PDF modifié, je ne l'aime pas, car la largeur de ligne par défaut est trop épaisse à mon goût. De plus, la couleur du contour est noire (par défaut); Je préfère le rouge pour avoir un contraste avec les formes numérisées à l'origine. Par conséquent, j'ajoute du code au début de cette ligne qui définit la largeur de ligne au quart de point:
.25 w
et un autre pour définir la couleur du trait sur le rouge:
1 0 0 RG
La ligne complète se lit maintenant:
.25 w 1 0 0 RG 1 Tr
C'est tout.
A noter que notre petite manipulation a endommagé le fichier, car sa "TOC" (en termes techniques: sa xref
table) ne sera plus valide. Acrobat Reader ou Acrobat Professional l'ouvrira néanmoins (sans se plaindre même) et "réparera" silencieusement la section xréf du fichier. D'autres lecteurs PDF peuvent rejeter le fichier, mais pour l'instant, cela nous est égal ...
Voici des captures d'écran du résultat:
(La première capture d'écran est agrandie sur la largeur de la fenêtre.)
(La deuxième capture d'écran est agrandie à 800%.)
Les contours rouges sont le texte numérisé rendu visible maintenant, comme nous le voulions.
J'ai effectué la même procédure que celle décrite ci-dessus pour les deux fichiers from_abbyy.pdf et after_ghostscript.pdf . J'ai ouvert les deux résultats dans 2 instances différentes d'Acrobat Reader. Si nous les faisons zoomer sur la même valeur et maximiser les deux fenêtres, il est facile de basculer la vue entre les deux fichiers via [alt]+[tab]
. C'est un bon moyen de révéler même les différences de rendu les plus fines entre deux fichiers PDF.
Mon résultat est: il n'y a même pas un seul pixel différent entre l'entrée de Ghostscript (v9.02) et sa sortie pour ce fichier. Mais il y a toute une différence si vous voulez copier-coller du texte ...