web-dev-qa-db-fra.com

Reconnaître par programme le texte des scans dans un PDF Fichier

J'ai un fichier PDF, qui contient des données que nous devons importer dans une base de données. Les fichiers semblent être des scans pdf de texte alphanumérique imprimé. On dirait que 10 pt. Times New Roman. 

Y at-il des outils ou des composants qui peuvent me permettre de reconnaître et d’analyser ce texte?

26
Rob

Vous ne pouvez pas extraire le texte numérisé d'un PDF. Vous avez besoin d'un logiciel OCR. La bonne nouvelle est qu'il existe quelques applications open source que vous pouvez essayer et la route d'OCR sera probablement plus facile que d'utiliser une bibliothèque PDF pour extraire du texte. Découvrez Tesseract et GOCR.

6
jm4

J'ai posté à propos de l'analyse de pdf dans l'un de mes blogs. Hit ce lien:

http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox-another-sample-for-grade-1-upup. aspx

Edit: Link ne fonctionne plus longtemps. Ci-dessous, extrait de http://web.archive.org/web/20130507084207/http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source -library-pdfbox-another-sample-sample-for-1-eleved.aspx

Ce qui suit est basé sur des exemples populaires disponibles sur le Web . Cela permet de "lire" le fichier pdf et de l’afficher sous forme de texte dans le fichier contrôle de zone de texte enrichi dans le formulaire. La bibliothèque PDFBox for .NET peut être téléchargé de sourceforge.

Vous devez ajouter une référence à IKVM.GNU.Classpath & PDFBox-0.7.3. Et de plus, FontBox-0.1.0-dev.dll et PDFBox-0.7.3.dll doivent être ajoutés sur le dossier bin de votre application. Pour une raison quelconque, je ne me souviens pas (peut-être que cela provient d'un des tutoriels), j'ai aussi ajouté à la corbeille IKVM.GNU.Classpath.dll. 

Sur la note de côté, je viens de recevoir ma copie de "Head First C #" (sur la suggestion de Keith ) D'Amazon. Le livre est cool! C'est vraiment écrit pour débutants. Cette édition couvre VS2008 et le framework 3.5.

Voici...

/* Marlon Ribunal
 * Convert PDF To Text
 * *******************/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.IO;
using System.Text;
using System.ComponentModel.Design;
using System.ComponentModel;
using org.pdfbox.pdmodel;
using org.pdfbox.util;

namespace MarlonRibunal.iPdfToText
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent(); 
        }

        void Button1Click(object sender, EventArgs e)    
        {    
            PDDocument doc = PDDocument.load("C:\\pdftoText\\myPdfTest.pdf");
            PDFTextStripper stripper = new PDFTextStripper();
            richTextBox1.Text=(stripper.getText(doc));
        }

     }
}
5
MarlonRibunal

Dans une entreprise pour laquelle je travaillais, nous avons utilisé la boîte à outils ActivePDF avec un certain succès:

http://www.activepdf.com/products/serverproducts/toolkit/index.cfm

Je pense que vous auriez au moins besoin de la version Standard ou Pro, mais ils ont des essais afin que vous puissiez voir si elle fera ce que vous voulez.

2
Dana

Une recherche rapide sur Google montre ce résultat prometteur . http://www.pdftron.com/net/index.html

1
Sijin

Vous pouvez utiliser un module tel que PDF de Perl pour extraire le texte. Et utilisez un autre outil pour importer les informations pertinentes dans la base de données.

Je suis sûr qu'il existe PDF des composants pour .NET, mais je n'en ai pas essayé, je ne sais donc pas ce qui est bon.

1
J.J.

Si le PDF est une numérisation de texte imprimé, il sera difficile (traitement de l'image, reconnaissance des caractères, etc.) de le faire vous-même. PDF stockera généralement les documents numérisés au format JPEG en interne. Il vaut mieux utiliser un outil tiers (outil de ROC) qui effectue cela.

1
Vivek

Sheebz demande comment extraire les champs PDF et charger les données dans une base de données. Avez-vous regardé iTextSharp? - http://sourceforge.net/projects/itextsharp/

0
MarlonRibunal

J'ai récemment trouvé ReportLab pour Python.

0
Walter

Sur la base de la réponse de Mark Brackett, j'ai créé un package Nuget pour envelopper pdftotext .

C'est open source , .net standard 1.6 et .net framework 4.5.

Usage:

using XpdfNet;

var pdfHelper = new XpdfHelper();

string content = pdfHelper.ToText("./pathToFile.pdf");
0
user1917528