Question

J'ai un très grand fichier PDF (200 000 Ko ou plus) qui contient une série de pages ne contenant que des tables. Je voudrais analyser en quelque sorte ces informations en utilisant Ruby, et d'importer les données résultantes dans une base de données MySQL.

Quelqu'un sait-il de toutes les méthodes pour tirer ces données sur le PDF? Les données sont formatées de la manière suivante:

Nom | adresse | Rapporté en espèces | Rapporté Année | Nom du titulaire

Parfois, le champ Nom déborde dans le champ d'adresse, auquel cas les colonnes restantes sont affichées sur la ligne suivante.

En raison du format irrégulier, je suis coincé sur ceci comprendre. À tout le moins, pourrait point quelqu'un me à une bibliothèque de PDF Ruby pour cette tâche?

Mise à jour: Je accidentellement fourni des informations incorrectes! La taille du fichier est de 300 Mo ou 300 000 Ko. J'ai fait le changement ci-dessus pour en tenir compte.

Était-ce utile?

La solution

Je suppose que vous pouvez Copy'n'Paste des extraits de texte sans problème lorsque votre fichier PDF est ouvert dans Acrobat Reader ou un autre PDF Viewer?

Avant d'essayer d'analyser un texte extrait de ces fichiers monstre programme (même si elle est de 200 Mo seulement - pour un texte simple dans les tableaux qui est huuuuge, sauf si vous avez 200000 pages ...), je procéderait comme ceci:

  1. Essayez de désinfecter le fichier d'abord par re-distiller.
  2. Essayez avec des outils CLI pour extraire le texte dans un fichier .txt.

Ceci est une question de minutes. L'écriture d'un programme Ruby pour ce faire est certainement une question d'heures, de jours ou de semaines (en fonction de vos connaissances sur le fonctionnement interne de FileFormat PDF ... Je suppose que vous n'avez pas beaucoup d'expérience de ce encore).

Si "2." travaux, vous pouvez faire à mi-chemin déjà. Si cela fonctionne, vous savez aussi que faire avec Ruby programme est un travail qui peut en principe être résolu. Si « 2. » ne fonctionne pas, vous le savez peut être extrêmement difficile à réaliser un programme.

Assainir le 'Monster.pdf':

Je suggère d'utiliser Ghostscript . Vous pouvez également utiliser Adobe Acrobat Distiller si vous y avez accès.

gswin32c.exe ^
  -o Monster-PDF-sanitized ^
  -sDEVICE=pdfwrite ^
  -f Monster.pdf

(je suis curieux de savoir combien cette commande unique fera de votre psy PDF de sortie si par rapport à l'entrée.)

Texte Extrait du PDF:

Je suggère d'abord pdftotext.exe try ( des gens de Xpdf ). Il existe d'autres, un peu plus des méthodes incommodes disponibles aussi, mais cela pourrait faire le travail déjà:

pdftotext.exe ^
   -f 1 ^
   -l 10 ^
   -layout ^
   -eol dos ^
   -enc Latin1 ^
   -nopgbrk ^
   Monster-PDF-sanitized.pdf ^
   first-10-pages-from-Monster-PDF-sanitized.txt

Ce ne sera pas extraire toutes les pages, mais seulement 1-10 (pour preuve de concept, pour voir si cela fonctionne du tout). Pour extraire de chaque page, laissez juste à côté du paramètre -f 1 -l 10. Vous devrez peut-être modifier le codage en changeant le paramètre à -enc ASCII7 (ou UTF-8, UCS-2).

Si cela ne fonctionne pas comme de quick'n'easy (parce que, comme cela arrive parfois, une police dans les usages PDF d'origine « codage personnalisé vecteur ») vous devriez poser une nouvelle question, décrivant les détails de vos résultats afin loin. Ensuite, vous devez recourir plus gros calibres pour abattre le problème.

Autres conseils

  

À tout le moins, pourrait point de tout le monde   moi à une bibliothèque de PDF Ruby pour cette   tâche?

Si vous ne l'avez pas fait, vous devriez vérifier les deux questions précédentes: « Ruby: Lecture fichiers PDF , » et " rubis pdf parsing joyau / bibliothèque ". PDF :: Lecteur , PDF :: Toolkit , et Docsplit sont quelques-unes des bibliothèques proposées relativement populaires. Il y a même une suggestion d'utiliser JRuby et certains analyseur de bibliothèque PDF Java .

Je ne suis pas sûr si l'une de ces solutions est réellement adaptée à votre problème, surtout que vous avez affaire à ces énormes fichiers PDF. Donc, à moins que quelqu'un offre une réponse plus informative, peut-être vous devez sélectionner une bibliothèque ou deux et les prendre pour un essai routier.

Ce sera une tâche difficile, en format PDF rendus ont aucune idée de mise en page sous forme de tableau, les lignes justes et texte dans des endroits prédéterminés. Il ne peut pas être possible de déterminer quelles sont les lignes et ce sont des colonnes, mais il peut dépendre du PDF lui-même.

Les bibliothèques Java sont les plus robustes et peut faire plus qu'un simple texte extrait. Donc, je regarderais en JRuby et iText ou PDFBox.

Vérifier s'il y a un contenu structuré dans le PDF. J'ai écrit un article de blog expliquant cette http://www.jpedal.org/PDFblog/? p = 410

Dans le cas contraire, vous aurez besoin de le construire.

Peut-être que la bibliothèque Ruby Prawn? texte lien

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top