Pourquoi le PDF à double colonne est-il extrait en série ? Gardez d'abord les coordonnées, puis parlez de l'ordre de lecture

Expliquez que la sérialisation du texte PDF sur deux colonnes provient du manque de structure sémantique du format, précisez que le paramètre de tri n'est qu'un tri géométrique. Un exemple Python synthétique basé sur le partitionnement de coordonnées est fourni pour démontrer la logique de réorganisation des séquences, clarifier les limites applicables et les lignes rouges de révision manuelle, et fournir un chemin d'acceptation pragmatique qui connecte le flux de travail de traduction OmniDoc.

Les séquences de texte extraites de PDF à double colonne ne sont souvent pas reconnues de manière incorrecte, mais sont lues dans le mauvais ordre. Cet article est destiné aux lecteurs qui ont besoin d'extraire du texte de fichiers PDF à double colonne tels que des articles et des rapports, puis de les traduire ou de les organiser.

Les lecteurs rencontrent généralement cette situation : à mi-chemin dans la colonne de gauche, la phrase suivante est suivie de l'explication de la formule dans la colonne de droite. Les personnages sont peut-être tous reconnus correctement, mais l'ordre est perturbé. Cet article explique d'abord pourquoi la sérialisation se produit, puis utilise un exemple synthétique pour démontrer comment réorganiser l'ordre en partitionnant par coordonnées. Enfin, il donne les limites applicables et la liste d'acceptation pour vous aider à juger s'il peut être utilisé dans vos propres fichiers.

Pourquoi le PDF à double colonne est-il extrait en série ? Conclusion en une phrase

Conservez d'abord les coordonnées et la page source, puis triez selon les règles régionales. Ne compressez pas directement la page entière dans une longue chaîne.

votre situationPratiques recommandéesraison
Papier ordinaire à deux colonnes, sérialisation du texteLisez d'abord la colonne de gauche d'une section, puis lisez la colonne de droiteL'épissage alterné ligne par ligne détruira les paragraphes
Je voulais juste essayer rapidementComparez les résultats de l'activation et de la désactivation de sortsort effectue uniquement un tri géométrique, adapté aux pages de règles
Les pages comportent des titres sur plusieurs colonnes, des notes latérales et des notes de bas de pageTraiter séparément par région et vérifier les relations régionalesLe tri géométrique ne peut à lui seul déterminer l’attribution de ces contenus.
Doit être remis au modèle de traductionConservez les coordonnées et les numéros de page, organisez d'abord la commande puis traduisezIl est difficile de remédier aux contextes dans le mauvais ordre, même en changeant de modèle.

Pourquoi la commande est-elle foirée ?

Le PDF enregistre la position de chaque paragraphe de texte, et non « de quel paragraphe s'agit-il et à quelle colonne appartient-il ? Lorsque l'outil d'extraction sort par coordonnées, s'il n'y a pas de règles de zone, le texte dans les colonnes de gauche et de droite peut être entrelacé.

De tels problèmes ne surviennent pas nécessairement lors de la phase d’identification. Peut-être que les mots sont tous mentionnés correctement, mais dans le mauvais ordre. Par conséquent, l’idée de la solution doit se concentrer sur le tri et le zonage, plutôt que sur la modification répétée des liens de reconnaissance ou de traduction.

Gardez d'abord les coordonnées, puis parlez de l'ordre de lecture

Avant de résoudre le problème de commande, conservez les coordonnées et la page d'origine du texte. Ne vous précipitez pas pour compresser la page entière en une seule longue chaîne.

  • Conservez les quatre coordonnées de chaque bloc de texte pour faciliter le jugement ultérieur de la propriété de la zone.
  • Conservez le numéro de la page source pour faciliter le retour en arrière et la vérification manuelle.
  • Une fois les informations régionales perdues, les traductions ultérieures se retrouveront dans un mauvais contexte, et la modification d'un modèle de traduction pourrait ne pas être en mesure d'y remédier.

sort=True vaut la peine d'être essayé, mais ce n'est pas un outil de compréhension de la mise en page

PyMuPDF propose différentes formes d'extraction telles que du texte, des mots, des blocs, etc. Le traitement spécifique de sort varie en fonction du type et de la version de sortie. Il ne peut pas être décrit de manière générale comme un algorithme de composition fixe, ni promettre de restaurer l'ordre de lecture de tous les documents.

Les suggestions d'utilisation sont les suivantes :

  • Pour la page des règles, vous pouvez d'abord comparer les résultats de l'activation et de la désactivation du tri.
  • Pour les pages comportant des titres sur plusieurs colonnes, des notes latérales et des notes de bas de page, la relation entre les zones doit être vérifiée à nouveau.
  • Le PDF peut contenir des balises structurelles, mais cela ne signifie pas que l'interface d'extraction actuellement utilisée vous donnera automatiquement l'arborescence sémantique des paragraphes dont vous avez besoin.

Cet article ne met pas en œuvre la reconnaissance universelle de la disposition, mais montre uniquement « comment trier selon les règles régionales existantes » et explique clairement les limites des capacités. Pour l'interface et le formulaire d'extraction, veuillez vous référer à Guide officiel d'extraction de texte PyMuPDF.

Utilisez cinq blocs de texte synthétisés pour expliquer le problème

La page d'exemple a une largeur de 600 points, avec une limite de 300 points entre les colonnes ; à moins de 80 points du haut se trouve la zone de titre inter-colonnes, et en dessous se trouve la zone de texte. La saisie est délibérément brouillée : le deuxième paragraphe de la colonne de droite vient en premier et le premier paragraphe de la colonne de gauche vient en dernier. Chaque tuple contient les quatre coordonnées du rectangle et du texte. Il s'agit d'une structure simplifiée définie à des fins de démonstration et n'équivaut pas à la valeur de retour complète de get_text("blocks").

Le résultat attendu doit être : titre, premier paragraphe dans la colonne de gauche, deuxième paragraphe dans la colonne de gauche, premier paragraphe dans la colonne de droite, deuxième paragraphe dans la colonne de droite. Les blocs de texte qui traversent les limites des colonnes doivent être placés dans la liste d'exceptions plutôt que d'être discrètement rejetés ou relégués dans la colonne de gauche.

Un petit exemple qui peut être exécuté complètement

Les exemples suivants utilisent uniquement la bibliothèque standard Python. Lors de la connexion à PyMuPDF, vous pouvez conserver les cinq premiers champs des résultats de l'extraction de blocs et exclure d'abord les blocs non textuels. L'exemple n'ouvre pas de fichiers externes, ne nécessite pas d'OCR et ne déduit pas automatiquement les limites des colonnes.

def order_known_layout(blocks, split_x=300, title_bottom=80):
    groups = {"title": [], "left": [], "right": []}
    rejected = []
    for block in blocks:
        x0, y0, x1, y1, text = block
        if x1 <= x0 or y1 <= y0:
            rejected.append(block)
            continue
        if y1 <= title_bottom:
            region = "title"
        elif y0 < title_bottom:
            rejected.append(block)
            continue
        elif x1 <= split_x:
            region = "left"
        elif x0 >= split_x:
            region = "right"
        else:
            rejected.append(block)
            continue
        groups[region].append(block)
    ordered = []
    for region in ("title", "left", "right"):
        ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
    return [b[4] for b in ordered], rejected

sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
          (40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
          (40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")

Les 80 et 300 dans l'exemple proviennent des paramètres de cette page composite et ne sont pas des seuils empiriques qui s'appliquent à tous les PDF. Lorsque la largeur des colonnes gauche et droite de la page suivante change, si les paramètres de la page précédente sont utilisés, "le programme s'exécute normalement mais le contenu est erroné" peut se produire. Les règles régionales doivent suivre la page, au moins enregistrer la version de la règle et la taille de la page.

📊 Comparaison de base

Méthode de traitementque peut-on faireÀ quoi faut-il faire attention
Utiliser directement sort=TrueFaites un tri géométrique par coordonnées. Vous pouvez d'abord l'essayer sur la page des règles.Ne comprends pas la propriété des titres inter-colonnes, des notes latérales et des notes de bas de page
Trier en fonction de la partition de coordonnéesDivisez d’abord la zone, puis lisez par section pour faciliter l’inspection.Le seuil de partition dépend de la page et doit être vérifié page par page.
Ordre de lecture annoté manuellementLe résultat est le plus contrôlable et le plus adapté à la vérification des documents clésCoût élevé, adapté aux contrôles ponctuels et aux références

Ne vous contentez pas de vérifier s'il y a des erreurs lors de l'acceptation

Vérifier les élémentsQue voirQue faire quand ça ne correspond pas
Ordre des zonesAprès le titre, d'abord la colonne de gauche complète, puis la colonne de droite complèteVérifiez les règles de partition et ne corrigez pas en changeant les chaînes
conservation du contenuLe nombre de blocs acceptés plus le nombre de blocs rejetés est égal au nombre de blocs d'entréeBloquer la livraison et vérifier s'il y a une perte de bloc silencieux
Texte croiséapparaître sur la liste de refusAjoutez une nouvelle section d'obstacles ou soumettez-la à un jugement manuel
Faire pivoter et recadrerLe bloc d'entrée utilise le même système de coordonnées que la partitionUnifiez d'abord les coordonnées, puis portez un jugement d'inclusion
En-tête, pied de pageClassés séparément par règles métierNe supprimez pas tout le texte du bas

Un vrai article peut également avoir une structure comme celle-ci : insérez une figure en colonnes croisées au milieu et redémarrez les colonnes doubles en dessous de la figure. À ce stade, la page doit d'abord être divisée en sections supérieure et inférieure, puis triée séparément. Les trois groupes de partitions uniques présentés dans cet article ne suffisent pas. Le sens de lecture ici ne doit pas être appliqué à la disposition verticale chinoise, au texte de droite à gauche et aux marginaux complexes.

🎯 Quelle méthode vous convient ?

si tu……

  • Uniquement les pages à une ou deux colonnes qui doivent traiter des règles : comparez d'abord les résultats de l'activation et de la désactivation de sort, puis décidez si des règles de partition sont nécessaires.
  • Gérez les articles avec des titres, des figures ou des notes de bas de page espacés : divisez les pages par sections et définissez des listes d'exceptions pour le contenu étalé.
  • La traduction doit être livrée à d'autres : Conservez les coordonnées et les numéros de page, et vérifiez-les un par un selon la liste d'acceptation. Ne vous contentez pas de vérifier s'il y a des erreurs pendant l'opération.
  • Vous ne souhaitez pas gérer vous-même les scripts : vous pouvez directement utiliser des outils de traduction de documents prêts à l'emploi et vérifier la traduction avec le même ensemble de listes de contrôle séquentielles.

Comment recevoir le processus de traduction d'OmniDoc

La valeur des scripts auto-construits réside dans la rédaction claire des règles d'acceptation ; l'intérêt des outils de traduction prêts à l'emploi réside dans la réduction des liens opérationnels entre les fichiers et les traductions. Il n'y a pas de conflit entre les deux. OmniDoc (portail produit) fournit un portail de traduction de documents et le site officiel introduit également des fonctions telles que l'OCR, le glossaire et la comparaison bilingue. Vous pouvez sélectionner un article désensibilisé que vous êtes autorisé à télécharger et vérifier la traduction en utilisant la même liste de contrôle séquentielle.

Concentrez-vous sur la vérification des éléments suivants :

  • Si la première phrase après le titre inter-colonnes est correctement connectée.
  • Les légendes des figures ont-elles été intégrées au texte ?
  • Si les références aux notes de bas de page correspondent toujours à l'emplacement correct.

Il s'agit d'évaluer les livrables, et non de déduire les algorithmes internes d'OmniDoc. Si les résultats ne répondent pas aux exigences, veuillez conserver la page originale et la section d'erreur, vérifiez d'abord si le problème réside dans le processus de reconnaissance, de tri ou de traduction, puis décidez comment le corriger.

❓ Questions fréquemment posées (FAQ)

1. Série PDF à double colonne, est-elle mal reconnue ?

incertain. Les mots peuvent tous être reconnus correctement, mais le problème réside souvent dans l'ordre de lecture, c'est pourquoi le tri et les règles régionales doivent être vérifiés en premier.

2. sort=True peut-il résoudre directement le problème de l'ordre des doubles colonnes ?

On ne peut pas généraliser. La gestion de sort varie selon le type et la version de sortie, ce n'est pas un outil de compréhension de la mise en page et ne peut pas promettre de restaurer l'ordre de lecture de tous les documents. Vous pouvez d'abord essayer la page de règles, et vous devez également vérifier la relation régionale pour les pages avec un contenu multi-colonnes.

3. Pourquoi la page entière ne peut-elle pas être compressée en une longue chaîne ?

Une fois les coordonnées et les informations de zone perdues, les traductions ultérieures obtiendront le mauvais contexte, et la modification d'un modèle de traduction risque de ne pas pouvoir y remédier.

4. Les 80 points et 300 points de l'exemple peuvent-ils être utilisés directement sur d'autres PDF ?

ne peut pas. Ce ne sont que les paramètres de cette page composite. Lorsque la taille de la page ou la largeur des colonnes change, la version de la règle doit être vérifiée et enregistrée séparément page par page.

📝Résumé

Pour les problèmes de commande dans des PDF à double colonne, les coordonnées et les pages sources doivent d'abord être conservées, puis traitées selon les règles régionales et vérifiées article par article conformément à la liste de contrôle d'acceptation. Les scripts auto-construits conviennent pour écrire des règles claires, et les outils prêts à l'emploi conviennent pour réduire les liens d'opération. Les deux peuvent être utilisés ensemble.

Essayez-le maintenant : téléchargez le document pour lancer la traduction, en conservant la mise en page d'origine.

Mis à jour le 2026-11-13