1
votes

Comment extraire des tableaux d'un PDF historique?

J'ai besoin d'extraire des données de tables au format similaire à partir de ce fichier . Il y a des erreurs OCR mais j'ai une méthode automatisée pour les corriger.

J'ai essayé:

Le problème: Les outils de publicité sont très mauvais pour détecter les bords de la table. Les tableaux suivent un format général similaire, mais chaque balayage est aligné légèrement différemment afin que le codage en dur ne fonctionne pas non plus.

Question: Connaissez-vous un bon moyen de détecter le début du tableau, puis d'appliquer l'un des quelques modèles?

Tous les autres conseils pour ce type de travail sont grandement appréciés.


0 commentaires

3 Réponses :


1
votes

Il existe un outil en ligne gratuit ici https: //www.pdftron .com / pdf-tools / pdf-extraction-de-table /

Le blog associé https://www.pdftron.com/blog/parsing-extraction/table-extraction-and-pdf-to-xml-with-pdfgenie/ fait référence à l'outil de ligne de commande PDFGenie


0 commentaires

0
votes

Au lieu du paramètre table_areas de Camelot (qui spécifie des limites fixes), vous pouvez essayer d'utiliser le paramètre table_regions pour spécifier les régions où se trouvent probablement les tables (Camelot analysera uniquement les régions spécifiées pour rechercher des tables).

https: // camelot-py .readthedocs.io / fr / master / user / advanced.html # specify-table-regions

Veuillez nous tenir au courant.


0 commentaires

4
votes

MISE À JOUR 2/26: J'ai résolu ma propre question, mais n'hésitez pas à répondre avec des solutions rapides ou meilleures.

L'un des principaux problèmes est que les tableaux sont à peu près similaires dans leurs dimensions mais varient d'une page à l'autre. Les images numérisées sont également légèrement décalées d'une page à l'autre, ce qui pose deux problèmes d'alignement . Mon flux de travail actuel résout les deux et est le suivant.

Alignement du type de tableau

< gagnantSolution:

  1. Utilisez les outils d'édition d'image d'ABBYY pour couper chaque page horizontalement. Cela donne un tableau sur chaque page.
  2. Notez qu'il existe 4 types de tableaux. Les pages paires et les pages impaires ont des dispositions distinctes. Le premier tableau de chaque page comprend un champ pour la date.
  3. Cela donne première table paire, première table impaire, reg-table-paire, reg-table-impaire. Le traitement d'un type à la fois avec des zones de tableau et des colonnes fixes corrige le désalignement dû à des différences dans la disposition des tableaux.

Alignement de l'image

Les images du même type de tableau ne sont toujours pas alignées, donc la spécification d'une disposition de tableau en coordonnées (x, y) ne fonctionnera pas. Les emplacements des tableaux sont différents dans chaque image.

J'avais besoin d'aligner les images en fonction de l'emplacement de la table, mais sans déjà détecter la table, il n'y avait pas de bon moyen de le faire.

J'ai résolu le problème d'une manière intéressante, mais j'ai d'abord essayé les étapes suivantes.

  1. Détectez les lignes verticales à l'aide d'Opencv. Résultat: n'a pas bien détecté les lignes pâles. Manquerait souvent des lignes, ce qui le rendrait inutile pour l'alignement.
  2. Utilisez Scan Tailor pour détecter le contenu. Résultat: l'algorithme de détection recadrerait trop certaines tables dans certains fichiers et dans d'autres inclurait des espaces blancs à cause de taches dans l'image. Le décapage n'a pas aidé.
  3. Utilisez Camelot avec de larges zones de tableau, sans valeurs de colonne. Résultat: cela fonctionnerait probablement bien dans d'autres cas, mais Camelot est tombé ici. Les données sont rapportées jusqu'à des centimes et il y a des espaces entre tous les trois chiffres. Cela a entraîné le mauvais placement du 00 dans plusieurs colonnes.

< gagnantSolution:

Après avoir découpé les images en tableaux expliqués dans la section Alignement du type de tableau, utilisez la fonction Alignement automatique des calques de Photoshop pour aligner les images.

Solution étape par étape:

  1. Ouvrez Photoshop
  2. Charger des images d'un type de table dans un seul fichier à l'aide de: File-Scripts-Load Files into Stack
  3. Utilisation: Modifier-Aligner automatiquement les calques
  4. Utilisez l'outil de recadrage pour que chaque fichier ait la même taille.
  5. Exportez chaque image dans son propre fichier: fichier-export-couches vers des fichiers
  6. Utilisez l'éditeur ABBYY OCR sur chacun des 4 types de table, codez en dur les colonnes et les lignes à l'aide de l'éditeur GUI.
  7. Exporter au format CSV depuis ABBYY
  8. Utilisez quelque chose comme clean.py pour supprimer les espaces et caractères.

C'est fait! Combinez les fichiers de chaque table comme vous le souhaitez. Je publierai mon code python pour faire cela lorsque j'aurai terminé le projet. Une fois nettoyées, je publierai aussi les données.


0 commentaires