Frage

Ich habe eine PDF-Datei, die Daten enthält, die wir in eine Datenbank importieren. Die Dateien scheinen pdf-Scans von gedruckten alphanumerischen Text zu sein. Sieht aus wie 10 pt. Times New Roman.

Gibt es irgendwelche Werkzeuge oder Bauteile, die erlauben kann mir diesen Text zu erkennen und zu analysieren?

War es hilfreich?

Lösung

ich verwendet habe, pdftohtml erfolgreich Tabellen in CSV aus PDF strippen. Es basiert auf Xpdf , die ein Allzweck-Werkzeug ist, das schließt pdftotext . Ich wickle es nur als Process.Start Anruf von C #.

Wenn Sie sich für etwas ein wenig mehr DIY suchen, gibt es die iTextSharp Bibliothek - eine Portierung von Java iText - und PDFBox (ja, es sagt Java - aber sie haben eine .NET-Version haft IKVM.NET ). Hier einige Codeproject Artikel zur Verwendung von iTextSharp und PDFBox von C #.

Und wenn Sie sind wirklich ein Masochist, könnten Sie in der Adobe nennen PDF IFilter mit COM-Interop. Der IFilter specs ist ziemlich einfach, aber ich würde vermuten, dass der Interop-Overhead wäre von Bedeutung.

Edit: Nach dem erneuten Lesen der Frage und die anschließende Antworten, es ist klar geworden, dass die OP es zu tun hat Bilder in seinem PDF. In diesem Fall müssen Sie die Bilder (die PDF-Bibliotheken oben sind in der Lage das zu tun, ziemlich leicht) und führen Sie es durch eine OCR-Engine extrahieren.

Ich habe verwendet MODI interaktiv vor, mit anständigen Ergebnissen. Es ist COM, so dass es von C # über Interop Aufruf ist auch machbar und ziemlich einfach :

' lifted from http://en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging
Dim inputFile As String = "C:\test\multipage.tif"
Dim strRecText As String = ""
Dim Doc1 As MODI.Document

Doc1 = New MODI.Document
Doc1.Create(inputFile)
Doc1.OCR()  ' this will ocr all pages of a multi-page tiff file
Doc1.Save() ' this will save the deskewed reoriented images, and the OCR text, back to the inputFile

For imageCounter As Integer = 0 To (Doc1.Images.Count - 1) ' work your way through each page of results
   strRecText &= Doc1.Images(imageCounter).Layout.Text    ' this puts the ocr results into a string
Next

File.AppendAllText("C:\test\testmodi.txt", strRecText)     ' write the OCR file out to disk

Doc1.Close() ' clean up
Doc1 = Nothing

Andere wie Tesseract , aber ich habe direkte Erfahrung mit ihm. Ich habe gute und schlechte Dinge über sie gehört, so stelle ich mir sehr auf Ihre Quelle Qualität abhängt.

Andere Tipps

Sie können nicht gescannten Text aus einer PDF extrahieren. Sie benötigen OCR-Software. Die gute Nachricht ist, gibt es ein paar Open-Source-Anwendungen können Sie versuchen, und die OCR-Route wird wahrscheinlich einfacher sein, als eine PDF-Bibliothek unter Verwendung von Text zu extrahieren. Schauen Sie sich Tesseract und GOCR.

Ich habe geschrieben über PDF-Dateien in einem meiner Blogs Parsen. Hit auf diesen Link:

http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox -Ein weiteres-Probe-für-Klasse-1-pupils.aspx

Edit: Link nicht lange funktioniert. Unterhalb von 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-for-grade-1-pupils.aspx

  

Nun wird die folgende basiert auf dem populären Beispielen im Internet verfügbar.   Was das bedeutet ist „lesen“, um die pdf-Datei und gibt es als Text in der   Rich Textfeld-Steuerelement in das Formular ein. Die PDFBox für .NET-Bibliothek kann sein   heruntergeladen von Source.

     

Sie müssen Bezug auf IKVM.GNU.Classpath & PDFBox-0.7.3 hinzuzufügen. Und   Außerdem müssen FontBox-0.1.0-dev.dll und PDFBox-0.7.3.dll auf hinzugefügt werden   die Binärordner Ihrer Anwendung. Aus irgendeinem Grund kann ich mich nicht erinnern   (Vielleicht ist es von einem des Tutorials), habe ich auch noch in den Papierkorb   IKVM.GNU.Classpath.dll.

     

Auf der Seite zur Kenntnis, hätte meine Kopie von „Head First C #“ (auf Keiths   Vorschlag) von Amazon. Das Buch ist cool! Es ist wirklich geschrieben für   Anfänger. Diese Ausgabe umfasst VS2008 und den Rahmen 3.5.

     

Hier gehen Sie ...

/* 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));
        }

     }
}

Bei einer Firma, die ich verwenden, um zu arbeiten, verwenden wir ActivePDF Toolkit mit einigem Erfolg:

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

ich glaube, Sie zumindest bräuchten die Standard- oder Pro-Version, aber sie haben Studien, so dass Sie sehen können, wenn sie werde tun, was Sie wollen es.

Eine schnelle Google-Suche zeigt dieses vielversprechendes Ergebnis. http://www.pdftron.com/net/index.html

Sie können ein Modul wie Perl benutzen PDF zu extrahieren der Text. Und ein anderes Werkzeug verwenden, um die relevanten Informationen in die Datenbank zu importieren.

Ich bin sicher, PDF-Komponenten für .NET gibt es, aber ich habe noch nichts versucht, so dass ich nicht weiß, was gut ist.

Wenn die PDF-Scans ein gedruckter Text ist, wird es schwer sein (betrifft die Bildverarbeitung, Zeichenerkennungs etc.), es selbst zu tun. PDF werden die gescannten Dokumente als JPEG-Dateien intern generell speichern. Sie sind besser von einem Drittanbieter-Tool (OCR-Tool) verwenden, das dies tut.

Vor kurzem habe ich gefunden habe ReportLab für Python.

Wenn ich es richtig, sheebz ist zu fragen, wie PDF-Felder zu extrahieren und die Daten in eine Datenbank laden. Hast Du bei der iTextSharp geschaut? - http://sourceforge.net/projects/itextsharp/

Basierend auf Mark Brackett Antwort, habe ich ein Nuget Paket pdftotext .

Es ist Open-Source-, Targeting .net Standard 1.6 und .net Framework 4.5 .

Verbrauch:

using XpdfNet;

var pdfHelper = new XpdfHelper();

string content = pdfHelper.ToText("./pathToFile.pdf");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top