2017-06-17 2 views
0

J'ai un document PDF en grand nombre, dont j'ai besoin d'extraire du texte. Le texte extrait que j'utilise pour un traitement ultérieur. Je l'ai fait pour un petit sous-ensemble de documents en utilisant l'API de Tesseract dans une approche linéaire et j'obtiens la sortie requise. Cependant, cela prend beaucoup de temps quand j'ai un grand nombre de documents.Nécessité de mettre en œuvre l'extraction de fichiers PDF en vrac à l'aide de l'API Tesseract

J'ai essayé d'utiliser les fonctionnalités de traitement de l'environnement Hadoop (Map-Reduce) et de stockage (HDFS) pour résoudre ce problème. Cependant, je suis confronté à un problème pour implémenter l'API Tesseract dans l'approche Hadoop (Map-Reduce). Comme Teserract convertit les fichiers en fichiers image intermédiaires, je suis confus quant à la façon dont les fichiers Image de résultats intermédiaires de Tesseract-API-process peuvent être traités dans HDFS.

J'ai cherché et essayé en vain quelques options plus tôt comme:

  1. Je texte extrait de PDF en étendant la classe FileInputFormat dans ma propre classe PdfInputFormat utilisant Hadoop-Map-Reduce, pour ce que j'ai utilisé Apache PDFBox pour extraire le texte du pdf, mais quand il s'agit de pdf scanné qui contient l'image, cette solution ne me donne pas les résultats requis.

  2. J'ai trouvé quelques réponses sur le même sujet indiquant d'utiliser -Fuse et cela aidera ou devrait générer des fichiers image localement et que les télécharger dans hdfs pour un traitement ultérieur. Je ne sais pas si c'est la bonne approche.

Aimeriez-vous connaître les approches autour de cela.

+0

Apache Tika rend les fichiers avec Apache PDFBox, puis effectue l'OCR avec tesseract, peut-être que c'est pour vous ... –

+0

@TilmanHausherr Merci pour la réponse. Est-ce que je pourrais faire ce travail dans l'approche Map Reduce?Veuillez élaborer/partager quelques exemples si possible. – Bonson

+0

Désolé, je ne peux pas aider avec le reste. Je suis venu ici seulement à cause de PDFBox. –

Répondre

0

Cette approche est trouvée pour traiter plusieurs documents en pdf pour extraire le texte en utilisant la puissance du framework Hadoop, puis utiliser ce texte pour un traitement ultérieur:

  1. Mettez tous les fichiers PDF à convertir en texte dans un dossier.
  2. Créez un fichier texte par fichier pdf pour contenir le chemin d'accès au fichier PDF. par exemple. si j'ai 10 pdfs à convertir, alors j'ai 10 fichiers texte générés, chacun contenant le chemin unique vers le pdf respectif.
  3. Ces fichiers texte sont donnés en entrée dans le programme de réduction de la carte
  4. Étant donné que la taille du fichier d'entrée est très petite, seule une division d'entrée est générée par la structure pour 1 entrée. Par exemple, si j'ai 10 pdfs en entrée, le framework générera 10 entrées-split.
  5. À partir de chaque segment d'entrée, une ligne (enregistrement) est lue par le lecteur d'enregistrement et transmise à un mappeur en tant que valeur. Donc, s'il y a 10 enregistrements (ligne == File Path) dans le fichier texte d'entrée, 10 mappeurs seront exécutés. Comme j'ai un enregistrement par division d'entrée, un réducteur-mappeur est assigné à cette tâche.
  6. Comme j'ai 10 entrées-split 10 mappeur va fonctionner, parallèle.
  7. A l'intérieur du Mapper ghost-script génère des images, en passant le nom de fichier à partir de l'attribut de valeur Mapper. L'image est convertie en texte en utilisant Tesseract à l'intérieur du mappeur lui-même pour obtenir le texte de chaque pdf. C'est la sortie.
  8. Ceci est transmis au réducteur pour effectuer d'autres travaux d'analyse si nécessaire.

Ceci est la solution actuelle. Souhaiterait des commentaires à ce sujet.