Un PDF ne contient pas de lignes de texte. Il contient des glyphes aux coordonnées, et les lignes que vous pouvez voir sont une chose que votre œil assemble. Tout extracteur doit également les assembler, à partir de trois nombres par exécution et de quelques seuils, et presque toutes les bizarreries du texte extrait remontent à l'un de ces seuils, ce qui fait un appel raisonnable qui se trouve être erroné. Celui que j'ai corrigé en écrivant ceci a transformé un nom de famille brisé en travers d'une ligne, "sei-" puis "mensah", en "osei-mensah" : trait d'union, comme prévu, avec un espace qui n'a jamais appartenu là-bas.
tl;dr : L'extraction est un réassemblage de ligne et les paramètres qui comptent sont invisibles. Les courses à moins d'une demi-hauteur de police l'une de l'autre sont une ligne, un écart vertical de plus de 1,45 fois l'écart habituel de la page commence un paragraphe, un écart horizontal sous un quart de la hauteur de police n'est pas un espace de mots. choisir refluer coller dans un éditeur et conserver pour les tableaux et le code. Un PDF avec une moyenne de moins de 12 caractères Une page est une analyse et nécessite à la place OCR, ce que l'outil dit plutôt que de vous remettre un fichier vide. PDF en texte s'exécute dans le navigateur.
Pourquoi un PDF a-t-il besoin d'"extrait" ?
Parce que le texte qu'il contient était écrit comme des instructions de dessin, et les lire n'est pas l'inverse de les écrire.
Un flux de contenu indique "Définir cette police à cette taille, déplacer ici, afficher ces glyphes". le cahier des charges Décrit un modèle de peinture et les opérateurs de texte sont assis à côté de ceux pour dessiner des lignes et remplir des formes. Il n'y a pas de ligne de sens d'objet, de paragraphe ou de colonne. quoi pdf.js Hands Back est une liste plate de pistes positionnées, chacune avec une chaîne, un X, un Y, une largeur et une hauteur de police, dans l'ordre où la page a été peinte. Sur une page de test, cette commande ne lit pas l'ordre, et une seule exécution peut être un caractère.
Tout le reste est une reconstruction. Trois seuils font presque tout, et ils valent la peine d'être connus car ils expliquent les échecs.
| Seuil | évaluer | ce qu'il décide |
|---|---|---|
| Tolérance de ligne | 0,5 x hauteur de police | Si deux points sont sur la même ligne |
| rapport de paragraphe | 1,45 x Lacune médiane de la page | Si un écart vertical commence un nouveau paragraphe |
| Rapport d'espace | 0,25 x hauteur de police | Si un écart horizontal est un espace de mots |
Chacun est une fraction de la taille propre du texte plutôt qu'un nombre fixe de points, donc une note de bas de page et un en-tête sur la même page obtiennent des tolérances différentes, et un document défini en 9 points se comporte comme un ensemble en 14.
Pourquoi le seuil d'espace de mots est-il nécessaire ?
Parce que sans cela, chaque mot se sépare.
Un analyseur PDF divise fréquemment un seul mot sur plusieurs séries sans écart entre eux, pour le crénage ou pour un changement de police au milieu du mot. La jonction des exécutions sur un espace tourne inconditionnellement filename dans f i l e n a m e. Se joindre à rien du tout exécute des mots séparés ensemble.
La règle est donc un écart plus large qu'un quart de la hauteur de police compte comme un espace, qui est à peu près la largeur d'un espace de mots réel dans la plupart des polices de caractères. En dessous, les courses font partie d'un seul mot.
C'est le seuil que vous ne remarquerez jamais et que vous remarquerez immédiatement en échec, généralement sur un en-tête défini avec un espace de lettres large, où chaque lettre est suffisamment éloignée pour ressembler à un mot.
Quelle est la différence entre reflux et conservation ?
La refusion vous donne de la prose. La conservation vous donne la page.
Voici un paragraphe posé sur trois lignes, suivie d'une autre, s'effectuant dans les deux modes :
--- preserve ---
The committee reviewed the figures and agreed that the
revised protocol should be circulated before the end of
the month.
A second paragraph begins here after a larger gap.
--- reflow ---
The committee reviewed the figures and agreed that the revised protocol should be circulated before the end of the month.
A second paragraph begins here after a larger gap.
Reflow a joint les trois lignes en une phrase et a mis une ligne vide entre les paragraphes. La conservation a conservé chaque ligne de saut de ligne avec laquelle la page a été aménagée, y compris celle au milieu d'une phrase.
| Utiliser le refusion | Utiliser la conservation |
|---|---|
| Coller dans un document ou un éditeur | Un tableau, où les colonnes sont le contenu |
| Citer un passage | Une liste de codes, où les sauts de ligne sont syntaxiques |
| alimenter du texte à un script ou à un modèle | un bloc d'adresse ou un formulaire |
| tout ce que vous reformatez de toute façon | Tout ce que la mise en page a un sens |
La refusion est la valeur par défaut et la bonne la plupart du temps. L'erreur que les gens font est de l'utiliser sur une table, où joindre les lignes à la prose détruit la seule structure dont la table avait.
Comment décide-t-il d'où s'arrête un paragraphe ?
En comparant chaque écart vertical avec l'écart typique de la page.
Chaque écart entre les lignes consécutives est mesuré, la médiane est prise et tout écart de plus de 1,45 fois la médiane commence un nouveau paragraphe. Ainsi, une page à simple interligne ne revient pas comme un paragraphe par ligne, et une page à double interligne ne revient pas en un seul bloc.
L'utilisation de la médiane plutôt que d'un nombre fixe est ce qui rend ce travail dans les documents avec des leaders différents. C'est aussi là qu'il échoue : une page avec très peu de lignes n'a pas de médiane fiable. Une page de titre, une courte note ou une page de garde revient souvent comme un paragraphe de mise en marche, ce qui est la même faiblesse Le mot conversion a, pour la même raison.
Le correctif est manuel et rapide. Les sauts de paragraphe sont évidents pour un lecteur d'une manière qu'ils ne sont pas à un seuil.
Qu'est-il arrivé aux mots brisés sur les lignes ?
Ils sont rejoints, et la règle pour laquelle les traits d'union doivent être abandonnées est une supposition qui est le plus souvent.
Lorsqu'une ligne se termine par un trait d'union, la question est de savoir si le dactylographe l'a mis là pour briser un mot ou s'il appartient au mot. La règle utilisée ici est le cas : si la ligne suivante commence en minuscules, le trait d'union était le typographe et va ; s'il commence par un majuscule ou un chiffre, le trait d'union fait partie du texte et reste.
| Cassé sur les lignes | Résultat | N'est-ce pas |
|---|---|---|
self- + contained |
selfcontained |
oui |
re- + encode |
reencode |
oui |
client- + Side |
client-Side |
oui |
Osei- + Mensah |
Osei-Mensah |
oui |
COVID- + 19 |
COVID-19 |
oui |
2026- + 03 |
2026-03 |
oui |
well- + known |
wellknown |
non |
La dernière ligne n'est pas réparable par aucune règle. "Bon-connu" brisé à son propre trait d'union et "bien connu" brisé par la justification produit la même paire de lignes, et les distinguer a besoin d'un dictionnaire plutôt que d'un seuil. Il en va de même pour "re-" et "encodage" ci-dessus, ce qui se trouve être juste parce que "reencode" n'est pas un mot que quiconque écrit.
Les lignes au milieu sont celles qui ont changé pendant la rédaction de ce guide. Le cas sans rupture utilisé pour ajouter un espace avec le trait d'union maintenu, produisant Osei- Mensah et 2026- 03. Le trait d'union appartient au mot de toute façon, donc un espace après ce n'est jamais correct, et le test qui a affirmé que l'ancienne sortie a été corrigé avec le comportement.
Comment sait-il qu'un PDF est une analyse ?
En comptant les caractères par page, avec un seuil suffisamment bas pour que seul un véritable scan le déclenche.
Un document numérisé est un PDF rempli d'images. Il n'y a pas de couche de texte, donc l'extraction ne renvoie rien, et la réponse utile est de le dire plutôt que de remettre un fichier vide.
0 chars over 3 pages treated as a scan
30 chars over 3 pages treated as a scan
36 chars over 3 pages has a text layer
11 chars over 1 page treated as a scan
12 chars over 1 page has a text layer
La ligne est composée de douze caractères par page. Ce n'est pas nul à dessein : une page numérisée contient souvent un peu de texte accessoire du scanner, un numéro de page estampillé par le logiciel ou un filigrane. Un seuil à zéro appellerait ces documents extractibles et renverrait trois numéros de page.
Si votre PDF est une analyse, la prochaine étape est OCR et Le compte rendu mesuré de ce qui casse l'OCR A la version mesurée de cela : Tilt au-delà de trois degrés vous coûte bien plus que la faible résolution.
Qu'en est-il des colonnes ?
Ils s'entrelacent, et c'est la limite qui vaut la peine d'être connue avant de faire confiance à toute extraction.
Les lignes sont d'abord regroupées par ligne de base, de sorte que deux colonnes de texte situées aux mêmes positions verticales sont lues plutôt que vers le bas. Dans un test d'une page de rapport à deux colonnes, le résultat était chaque ligne de la colonne de gauche suivie immédiatement de la ligne à côté :
Revenue rose in the third Headcount grew by four, quarter on the back of
two all in support. The hiring large renewals signed in plan for the fourth
Chaque mot est présent. La commande est inutile et la sortie se lit comme un non-sens fluide plutôt qu'une erreur.
Les journaux et journaux académiques survivent souvent à cela, car la gouttière entre les colonnes est suffisamment large et régulière pour qu'une étape de segmentation de page puisse être trouvée. Un rapport avec une barre latérale, un devis de tirage ou une table à deux colonnes ne le fait souvent pas.
L'approche fiable d'un document en colonnes consiste à vérifier le premier paragraphe de chaque page. Si les phrases sont épissées, extrayez une colonne à la fois en recadrant ou acceptez que vous receviez un mot sac plutôt que de la prose.
Pouvez-vous obtenir un tableau d'un PDF ?
Les valeurs, oui. Le tableau, non, et la raison en est que le PDF ne contient certainement pas de table non plus.
Un tableau dans un PDF est généralement un texte dessiné en coordonnées avec quelques lignes tracées autour de lui. Les lignes sont des opérations graphiques sans rien dans le fichier qui les connecte au texte qu'elles renferment, et les cellules ne sont pas des cellules, ce sont des exécutions qui s'alignent. Ainsi, un extracteur voit des lignes de texte et les lit :
Region Q2 Q3 EMEA 412 455 AMER 388 401 APAC 120 166
Chaque figure a survécu. Vous ne pouvez pas dire à partir de cette ligne à quel quart 412 appartient sans compter les positions et sans connaître la forme de l'original.
Le mode de conservation aide un peu, car il conserve la structure de la ligne au fur et à mesure que la ligne saute, ce qui vous indique au moins où chaque ligne s'est terminée. Il ne vous donne toujours aucune limite de colonne.
Deux choses fonctionnent. un étiqueté PDF, exporté avec soin depuis Word ou InDesign avec une structure d'accessibilité, contient un véritable balisage et des conversions de table, ce qui est une minorité et vous pouvez généralement le dire car le document a été créé par quelqu'un qui s'en souciait. Et pour une table non étiquetée qui compte, la copier à la main est plus rapide que la lutte contre n'importe quel outil, ce qui est une réponse insatisfaisante qui a survécu à toutes les tentatives pour s'améliorer.
Que font les marqueurs de page ?
Ils conservent les numéros de page, ce qui compte plus que ce que vous pouvez citer ou auquel vous allez citer.
Avec des marqueurs, chaque page est étiquetée et les pages vides sont toujours comptées :
--- Page 1 ---
First page text.
--- Page 2 ---
--- Page 3 ---
Third page text.
La page 2 n'avait pas de texte extractible et s'affiche toujours. C'est délibéré : une feuille numérisée entre deux pages de texte disparaîtrait et chaque numéro de page serait erroné de une.
Avec des marqueurs désactivés, la page vide ne laisse aucune trace et les deux pages de texte sont simplement jointes. C'est le bon choix lorsque vous allez coller le texte quelque part et la pagination est un artefact du PDF plutôt qu'une partie du document.
Le texte extrait est-il le même que l'original ?
Les personnages sont. Tout le reste est parti, et la liste vaut la peine d'être lue avant de vous fier à la sortie.
Gras, italique, police, taille, couleur, tableaux, images, en-têtes et pieds de page, comme distincts du corps du texte, des notes de bas de page distinctes de la phrase qu'ils annotent, des liens en tant que liens et l'ordre de lecture de toute mise en page complexe. Ce que vous obtenez, ce sont des caractères et des sauts de paragraphe.
Pour la plupart des utilisations, c'est tout à fait exact. Rechercher, citer, compter, alimenter un script, coller dans un éditeur : tous ceux-ci veulent les mots et rien d'autre.
Là où il mord est un document dont le sens vit en partie dans sa mise en forme. Un contrat où un terme défini est en gras, une spécification où un exemple de code se distingue par sa police, un rapport où une note de bas de page modifie ce que prétend une phrase. Le texte extrait aplatit tout cela, et rien dans la sortie ne le dit.
Faut-il extraire du texte ou convertir en Word ?
Texte Si une machine le lira, Word si une personne le modifiera.
Les deux exécutent le même remontage, de sorte que la qualité des mots est identique. La différence n'est que ce qui est écrit à la fin : un .txt fichier, ou les mêmes paragraphes dans un zip de XML.
| Tu veux | manier |
|---|---|
| GREP, recherche ou alimente un script | PDF en texte |
| Compter les mots ou analyser le contenu | PDF en texte |
| Modifier la prose et l'envoyer | PDF à Word |
| Gardez la mise en page exactement | ni l'un ni l'autre ; obtenir le fichier d' |
La dernière ligne est celle que les gens arrivent, et aucune extraction ne vous le donne. Le guide de conversion de mots explique pourquoi en détail, avec une table qui revient comme une seule ligne de valeurs.
Quelle est la taille d'un PDF peut-il gérer ?
Large, et la limite est l'onglet plutôt que le format.
Le fichier entier est lu dans la mémoire de page et analysé à cet endroit, et le texte extrait est conservé à côté. Quelques centaines de pages de texte ordinaire sont banales ; un balayage de mille pages à haute résolution est une proposition différente car les images sont présentées pour le trajet même si aucune d'entre elles ne produit de texte.
Si un document est suffisamment grand pour s'inquiéter, le signal est l'analyse plutôt que l'extraction. Tirer le texte d'une page déjà analysée est bon marché ; mettre le fichier dans l'analyseur est ce qui prend le temps et la mémoire.
Pourquoi cela s'exécute-t-il dans le navigateur ?
Parce qu'une analyse n'a pas besoin de serveur et que les pdf que les gens extraient sont rarement publics.
Le fichier est lu depuis votre disque dans l'onglet, analysé avec PDF.js compilé pour le Web, réassemblé en texte et rendu. Aucune demande ne porte le document, rien n'est stocké et aucune copie n'est conservée dans les conditions que vous n'avez pas lues.
Les documents en question sont des contrats, des déclarations, des lettres médicales, des dépôts de justice, des documents sous embargo, des rapports internes. L'alternative conventionnelle télécharge le fichier entier dans un service en échange d'une opération qui est une analyse et une certaine arithmétique sur les coordonnées.
Le coût est la mémoire de l'onglet sur les fichiers très volumineux, et aucun OCR pour les analyses. Les deux sont visibles avant de commencer plutôt que de les découvrir par la suite.



