Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
OCR steht für "Optical Character Recognition" (optische Zeichenerkennung). Dies ist der Prozess der Umwandlung von Papierdokumenten oder Bildern in lesbaren Text. Hierfür gibt es verschiedene Methoden, wie z. B. das Scannen oder die manuelle Eingabe über eine Tastatur. Dies geschieht, um gescannte Dateien, PDFs oder handschriftliche Dokumente in ihr ursprüngliches Textformat zu konvertieren. Dieses Verfahren hat sich in Strafsachen als unschätzbar wertvoll erwiesen, wenn Dokumente zu beschädigt für eine manuelle Transkription sind, aber mit OCR-Software gescannt und interpretiert werden können.
Mit dem technologischen Fortschritt und dem allgegenwärtigen Einsatz digitaler Werkzeuge wurde OCR auch in anderen Bereichen eingesetzt, z. B. bei der Dokumentenkonvertierung in Anwendungen wie Google Docs, in der Wissenschaft und in der Geschäftswelt. Es gibt zwei Haupttypen von OCR, "statisch" und "dynamisch". Der häufigste Typ ist die statische OCR, bei der das gesamte Dokument auf einmal gescannt wird. Die dynamische OCR hingegen scannt eine Zeile nach der anderen und kann auch anspruchsvollere Layouts wie z. B. Tabellendaten verarbeiten.
In diesem Artikel wird der Vergleich zwischen zwei der gängigsten Anwendungen und Dokumentenbibliotheken für OCR und PDF diskutiert. Diese sind:
Um OCR mit PDFTron SDK zu verwenden, müssen wir ein separates OCR-Modul als Zusatzprogramm installieren. Dies hilft dem SDK bei der Erkennung von Text in Dokumenten. Es kann Text auswählbar und durchsuchbar machen. Das PDFTron SDK unterstützt bis zu 100 Sprachen. Die OCR-Engine von PDFTron wird von einem quelloffenen neuronalen LSTM-Netzwerk von Tesseract unterstützt. PDFTron OCR unterstützt mehrere Bildtypen und Formate für die Texterkennung. PDF-Dateien mit reinen Rasterbildern werden ebenfalls für OCR akzeptiert, wobei die Ausgabequalität vom Eingangsbild abhängt. Die besten Bilder für OCR sind Graustufenbilder mit einer Auflösung von 300 DPI.
Iron Software stellt Softwareentwicklern IronOCR for .NET zur Verfügung, um Textinhalte aus Fotos und PDFs in .NET-Anwendungen und Websites zu lesen. Die Software hilft beim Scannen von Fotos nach Text und Barcodes, unterstützt zahlreiche Sprachen weltweit und gibt die Daten als einfachen Text oder strukturierte Daten aus. Die OCR-Bibliothek von Iron Software kann in Web-, Konsolen-, MVC- und zahlreichen .NET-Desktop-Anwendungen eingesetzt werden. Beim kommerziellen Einsatz wird neben den erworbenen Lizenzen auch direkte Unterstützung durch das Entwicklungsteam angeboten.
Öffnen Sie Visual Studio und rufen Sie das Menü Datei auf. Wählen Sie ein neues Projekt und dann die Konsolenanwendung. Um PDF-Dokumente zu erzeugen, werden wir in diesem Artikel die Konsolenanwendung verwenden.
Geben Sie den Projektnamen ein und wählen Sie den Dateipfad in dem entsprechenden Textfeld aus. Klicken Sie dann auf die Schaltfläche Erstellen. Wählen Sie außerdem das gewünschte .NET-Framework aus.
Das Visual Studio-Projekt wird nun die Struktur für die ausgewählte Anwendung generieren.
Die Struktur des Projekts wird nun von Visual Studio generiert. Die Datei program.cs wird geöffnet, wenn Sie Windows-, Konsolen- und Webanwendung ausgewählt haben, damit Sie den Code eingeben und Ihre Anwendung erstellen/ausführen können.
Im nächsten Schritt müssen wir die Bibliothek hinzufügen, um den Code zu testen.
Die PDFTron OCR-Installation wird manuell durchgeführt und kann als Zip-Datei von der angegebenen Adresse heruntergeladen werden link. Entpacken und konfigurieren Sie es mit dem Projekt. Der Leitfaden hilft Ihnen dabei, PDFTron-Beispiele mit der kostenlosen integrierten Testversion des PDFTron SDK in einer .NET-Framework-Anwendung unter Windows auszuführen. In der kostenlosen Testversion sind Support durch Lösungsingenieure und eine unbegrenzte Nutzung enthalten.
Visual Studio: Stellen Sie sicher, dass die Workloads .NET Desktop Development und .NET-Framework 4.5.1+ Entwicklungswerkzeuge Teil Ihrer Installation sind. Diese Anleitung verwendet Visual Studio 2017 und PDFTrons C# .NET PDF Library für Windows. Laden Sie die Bibliothek über diesen Link herunter, .NET PDF SDK herunterladen.
Extrahieren Sie den Ordner aus der .zip-Datei. PDFNET_BASE wird in dieser Anleitung verwendet, um den Pfad zu dem entpackten Ordner auszuwählen.
PDFNET_BASE = path/to/extraction/folder/PDFNetDotNet4/
PDFNET_BASE = path/to/extraction/folder/PDFNetDotNet4/
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDFNET_BASE = path/@to/extraction/folder/PDFNetDotNet4/
Navigieren Sie zum Speicherort der extrahierten Inhalte. Suchen und öffnen Sie den Ordner Samples (PDFNET_BASE/Beispiele). Dieser Ordner enthält zahlreiche Beispielcodes für Funktionen, die vom PDFTron SDK unterstützt werden.
Öffnen Sie Samples_20XX.sln in Visual Studio. Wählen Sie eine geeignete Version für Ihre Visual Studio-Installation.
Wählen Sie den Beispielcode und es als Startup-Projekt festlegen für die Lösung.
Dies ist die Anwendung "PDFTron Hello World". Es ist einfach, den Rest des PDFTron SDKs zu integrieren, wenn Sie ein PDF-Dokument öffnen, speichern und schließen können.
Erstellen Sie in Visual Studio ein .NET-Framework-Konsolenanwendungsprojekt in Ihrer bevorzugten Sprache. Sie finden sie in der Kategorie Visual C# oder Visual Basic.
Navigieren Sie in den Ordner Ihres Projekts. Standardmäßig sollte der Pfad in etwa so lauten: C:/Benutzer/Benutzername/source/repos/myApp
Von PDFNET_BASE zu Ihrem Projektordner (dieser Ordner enthält Ihre .csproj- oder .vbproj-Datei)kopieren Sie den Ordner Lib.
Suchen Sie den Projektmappen-Explorer auf der rechten Seite. Wählen Sie die Option Verweis hinzufügen, indem Sie mit der rechten Maustaste auf Verweise klicken. Dies öffnet ein Dialogfeld Referenzmanager.
Wählen Sie im unteren Teil des Dialogfelds die Option Durchsuchen. Gehen Sie in den kopierten Lib-Ordner, um PDFNetLoader.dll zu den Referenzen hinzuzufügen
Fügen Sie außerdem im x86-Ordner die passende Version von PDFNet.dll als weitere Referenz hinzu (path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). Dadurch wird sichergestellt, dass die Anwendung sowohl auf 32-Bit- als auch auf 64-Bit-Betriebssystemen ausgeführt werden kann.
Die IronOCR-Bibliothek kann auf vier Arten installiert werden.
Diese sind:
Visual Studio bietet die Option NuGet Package Manager, um das Paket direkt in der Lösung zu installieren. Der Screenshot zeigt, wie Sie den NuGet Package Manager öffnen.
Dadurch wird ein Suchfeld angezeigt, das die Liste der Pakete von der NuGet-Website enthält. In der Paketverwaltung müssen wir nach dem Schlüsselwort "IronOCR" suchen, wie im folgenden Screenshot dargestellt:
In der obigen Abbildung sehen Sie die Liste der verwandten Suchergebnisse. Um das Paket in der Lösung zu installieren, müssen wir die gewünschte Option auswählen.
Installieren-Paket IronOcr
Das Paket wird nun direkt in das aktuelle Projekt installiert und ist dann einsatzbereit.
### 3.2.3 Direkter Download von der NuGet-Website
Bei der dritten Methode können wir das NuGet-Paket direkt von der Website herunterladen
* Navigieren Sie zu diesem [Link](https://www.nuget.org/packages/Ironocr).
* Vergewissern Sie sich, dass Sie im Menü auf der rechten Seite die Option "Paket herunterladen" auswählen.
* Doppelklicken Sie auf das heruntergeladene Paket. Sie wird automatisch installiert.
* Laden Sie dann die Lösung neu und verwenden Sie sie im Projekt.
### 3.2.4 Direkter Download von der IronOCR-Website
Sie können das neueste Paket direkt von der Website herunterladen, indem Sie hier klicken [link](https://ironsoftware.com/csharp/ocr/packages/IronOcr.zip). Folgen Sie den Anweisungen, um das Paket dem Projekt hinzuzufügen, sobald das neueste Paket heruntergeladen ist.
* Klicken Sie mit der rechten Maustaste auf das Projekt im Lösungsfenster.
* Wählen Sie Option Referenz, um den Speicherort der heruntergeladenen Referenz zu suchen.
* Klicken Sie dann auf OK, um die Referenz hinzuzufügen.
### 4.0 OCR-Bild
IronOCR und **PDFtron OCR** verfügen beide über eine OCR-Technologie, mit der Bilder in Text umgewandelt werden können.
### 4.1 Verwendung von **PDFTron**
Konvertieren Sie PDF in DOCX, DOC, HTML, SVG, TIFF, PNG, JPEG, XPS, EPUB, TXT und viele andere Formate.
`` cs
PDFDoc doc = new PDFDoc(dateiname);
// PDF-Dokument in SVG umwandeln
Convert.ToSvg(doc, output_filename + ".svg");
// PDF-Dokument in XPS konvertieren
Convert.ToXps(dateiname, output_filename + ".xps");
// PDF-Dokument in mehrseitiges TIFF konvertieren
Convert.TiffOutputOptions tiff_options = new Convert.TiffOutputOptions();
tiff_options.SetDPI(200);
tiff_options.SetDither(wahr);
tiff_options.SetMono(wahr);
Convert.ToTiff(filename, output_filename + ".tiff", tiff_options);
// PDF in XOD konvertieren
Convert.ToXod(dateiname, output_filename + ".xod");
// PDF in HTML umwandeln
Convert.ToHtml(dateiname, output_filename + ".html");
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
Input.AddImage(@"3.png");
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
Console.ReadKey();
}
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
Input.AddImage(@"3.png");
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
Console.ReadKey();
}
Dim Ocr = New IronTesseract() ' nothing to configure
Ocr.Language = OcrLanguage.EnglishBest
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using Input = New OcrInput()
Input.AddImage("3.png")
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
Console.ReadKey()
End Using
Die obige Abbildung zeigt den Prozess der Konvertierung von Bilddateien in Text mit der Tesseract 5 API. Die obige Codezeile wurde verwendet, um ein Objekt für Iron Tesseract zu erstellen. Um sicherzustellen, dass wir eine oder mehrere Bilddateien hinzufügen können, haben wir außerdem ein OcrInput-Objekt erzeugt, das den verfügbaren Bildpfad benötigt. Im Iron Tesseract-Objekt kann die Funktion "Lesen" verwendet werden, um die Bilder zu erhalten, indem die Bilddatei geparst und das erzeugte Ergebnis in das OCR-Ergebnis extrahiert wird. Es kann Text aus Fotos extrahieren und in eine Zeichenkette umwandeln.
Tesseract kann zum Hinzufügen von Bildern mit mehreren Frames verwendet werden, indem die Methode "AddMultiFrameTiff" für diesen Prozess verwendet wird. Jedes Einzelbild des Bildes wird von der Tesseract-Bibliothek als eine eigene Seite gelesen und behandelt. Jedes Einzelbild des Bildes wird gelesen, bevor mit dem nächsten Bild fortgefahren wird, bis jedes Bild erfolgreich gescannt wurde. Das TIFF-Bildformat ist das einzige unterstützte Format bei dieser Methode.
Die erfolgreiche Umwandlung der Daten in bearbeitbaren Text ist in der obigen Abbildung zu sehen, ein Ergebnis der IronOCR-Genauigkeit.
IronOCR und PDFTron OCR konvertieren PDF-Dateien in bearbeitbaren Text. **PDFTron OCR bietet dem Benutzer eine Reihe von Optionen, wie z. B. Speichern der Seite, Bearbeiten des Bildes, Erkennen der Seite usw. Außerdem kann es Speicheroptionen wie Dokument, Text, HTML-Format usw. anbieten. IronOCR ermöglicht es uns auch, eine konvertierte OCR-Datei in HTML, Text, PDF usw. zu speichern.
Der vollständige Beispielcode zeigt, wie Sie PDFTron OCR für die direkte, qualitativ hochwertige Konvertierung zwischen PDF, XPS, EMF, SVG, TIFF, PNG, JPEG und anderen Bildformaten verwenden.
// Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using pdftron;
using pdftron.Common;
using pdftron.Filters;
using pdftron.SDF;
using pdftron.PDF;
// The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.
namespace ConvertTestCS
{
class Testfile
{
public string inputFile, outputFile;
public bool requiresWindowsPlatform;
public Testfile(string inFile, string outFile, bool requiresWindowsPlatform_)
{
inputFile = inFile;
outputFile = outFile;
requiresWindowsPlatform = requiresWindowsPlatform_;
}
};
class Class1
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static Class1() {}
// Relative path to the folder containing test files.
const string inputPath = "../../../../TestFiles/";
const string outputPath = "../../../../TestFiles/Output/";
static bool ConvertSpecificFormats()
{
bool err = false;
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
Console.WriteLine("Converting from XPS");
pdftron.PDF.Convert.FromXps(pdfdoc, inputPath + "simple-xps.xps");
pdfdoc.Save(outputPath + "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved xps2pdf v2.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////
if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
Console.WriteLine("Converting from EMF");
pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath + "simple-emf.emf");
pdfdoc.Save(outputPath + "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved emf2pdf v2.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
}
///////////////////////////////////////////
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
// Add a dictionary
ObjSet set = new ObjSet();
Obj options = set.CreateDict();
// Put options
options.PutNumber("FontSize", 15);
options.PutBool("UseSourceCodeFormatting", true);
options.PutNumber("PageWidth", 12);
options.PutNumber("PageHeight", 6);
// Convert from .txt file
Console.WriteLine("Converting from txt");
pdftron.PDF.Convert.FromText(pdfdoc, inputPath + "simple-text.txt", options);
pdfdoc.Save(outputPath + "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved simple-text.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
///////////////////////////////////////////
try
{
using (PDFDoc pdfdoc = new PDFDoc(inputPath + "newsletter.pdf"))
{
// Convert PDF document to SVG
Console.WriteLine("Converting pdfdoc to SVG");
pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath + "pdf2svg v2.svg");
Console.WriteLine("Saved pdf2svg v2.svg");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////////
try
{
// Convert PNG image to XPS
Console.WriteLine("Converting PNG to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "butterfly.png", outputPath + "butterfly.xps");
Console.WriteLine("Saved butterfly.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
///////////////////////////////////////////
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
try
{
// Convert MSWord document to XPS
Console.WriteLine("Converting DOCX to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "simple-word_2007.docx", outputPath + "simple-word_2007.xps");
Console.WriteLine("Saved simple-word_2007.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
}
////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to XPS
Console.WriteLine("Converting PDF to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "newsletter.pdf", outputPath + "newsletter.xps");
Console.WriteLine("Saved newsletter.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
//////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to HTML
Console.WriteLine("Converting PDF to HTML");
pdftron.PDF.Convert.ToHtml(inputPath + "newsletter.pdf", outputPath + "newsletter");
Console.WriteLine("Saved newsletter as HTML");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
//////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to EPUB
Console.WriteLine("Converting PDF to EPUB");
pdftron.PDF.Convert.ToEpub(inputPath + "newsletter.pdf", outputPath + "newsletter.epub");
Console.WriteLine("Saved newsletter.epub");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to multipage TIFF
Console.WriteLine("Converting PDF to multipage TIFF");
pdftron.PDF.Convert.TiffOutputOptions tiff_options = new pdftron.PDF.Convert.TiffOutputOptions();
tiff_options.SetDPI(200);
tiff_options.SetDither(true);
tiff_options.SetMono(true);
pdftron.PDF.Convert.ToTiff(inputPath + "newsletter.pdf", outputPath + "newsletter.tiff", tiff_options);
Console.WriteLine("Saved newsletter.tiff");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
return err;
}
static Boolean ConvertToPdfFromFile()
{
System.Collections.ArrayList testfiles = new System.Collections.ArrayList();
testfiles.Add(new ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", false));
// testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", true));
bool err = false;
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
try
{
if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
{
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
else if (!pdftron.PDF.Convert.Printer.IsInstalled())
{
try
{
Console.WriteLine("Installing printer (requires Windows platform and administrator)");
pdftron.PDF.Convert.Printer.Install();
Console.WriteLine("Installed printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
// the function ConvertToXpsFromFile may require the printer so leave it installed
// uninstallPrinterWhenDone = true;
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: Unable to install printer.");
Console.WriteLine(e.Message);
err = true;
}
catch
{
Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.");
}
}
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: Unable to install printer.");
Console.WriteLine(e.Message);
err = true;
}
}
foreach (Testfile file in testfiles)
{
if ( Environment.OSVersion.Platform != PlatformID.Win32NT)
{
if (file.requiresWindowsPlatform)
{
continue;
}
}
try
{
using (pdftron.PDF.PDFDoc pdfdoc = new PDFDoc())
{
if (pdftron.PDF.Convert.RequiresPrinter(inputPath + file.inputFile))
{
Console.WriteLine("Using PDFNet printer to convert file " + file.inputFile);
}
pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath + file.inputFile);
pdfdoc.Save(outputPath + file.outputFile, SDFDoc.SaveOptions.e_linearized);
Console.WriteLine("Converted file: " + file.inputFile);
Console.WriteLine("to: " + file.outputFile);
}
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: on input file " + file.inputFile);
Console.WriteLine(e.Message);
err = true;
}
}
return err;
}
[STAThread]
static void Main(string [] args)
{
PDFNet.Initialize(PDFTronLicense.Key);
bool err = false;
err = ConvertToPdfFromFile();
if (err)
{
Console.WriteLine("ConvertFile failed");
}
else
{
Console.WriteLine("ConvertFile succeeded");
}
err = ConvertSpecificFormats();
if (err)
{
Console.WriteLine("ConvertSpecificFormats failed");
}
else
{
Console.WriteLine("ConvertSpecificFormats succeeded");
}
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
if (pdftron.PDF.Convert.Printer.IsInstalled())
{
try
{
Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)");
pdftron.PDF.Convert.Printer.Uninstall();
Console.WriteLine("Uninstalled Printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
}
catch
{
Console.WriteLine("Unable to uninstall printer");
}
}
}
PDFNet.Terminate();
Console.WriteLine("Done.");
}
}
}
// Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using pdftron;
using pdftron.Common;
using pdftron.Filters;
using pdftron.SDF;
using pdftron.PDF;
// The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.
namespace ConvertTestCS
{
class Testfile
{
public string inputFile, outputFile;
public bool requiresWindowsPlatform;
public Testfile(string inFile, string outFile, bool requiresWindowsPlatform_)
{
inputFile = inFile;
outputFile = outFile;
requiresWindowsPlatform = requiresWindowsPlatform_;
}
};
class Class1
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static Class1() {}
// Relative path to the folder containing test files.
const string inputPath = "../../../../TestFiles/";
const string outputPath = "../../../../TestFiles/Output/";
static bool ConvertSpecificFormats()
{
bool err = false;
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
Console.WriteLine("Converting from XPS");
pdftron.PDF.Convert.FromXps(pdfdoc, inputPath + "simple-xps.xps");
pdfdoc.Save(outputPath + "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved xps2pdf v2.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////
if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
Console.WriteLine("Converting from EMF");
pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath + "simple-emf.emf");
pdfdoc.Save(outputPath + "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved emf2pdf v2.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
}
///////////////////////////////////////////
try
{
using (PDFDoc pdfdoc = new PDFDoc())
{
// Add a dictionary
ObjSet set = new ObjSet();
Obj options = set.CreateDict();
// Put options
options.PutNumber("FontSize", 15);
options.PutBool("UseSourceCodeFormatting", true);
options.PutNumber("PageWidth", 12);
options.PutNumber("PageHeight", 6);
// Convert from .txt file
Console.WriteLine("Converting from txt");
pdftron.PDF.Convert.FromText(pdfdoc, inputPath + "simple-text.txt", options);
pdfdoc.Save(outputPath + "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused);
Console.WriteLine("Saved simple-text.pdf");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
///////////////////////////////////////////
try
{
using (PDFDoc pdfdoc = new PDFDoc(inputPath + "newsletter.pdf"))
{
// Convert PDF document to SVG
Console.WriteLine("Converting pdfdoc to SVG");
pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath + "pdf2svg v2.svg");
Console.WriteLine("Saved pdf2svg v2.svg");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////////
try
{
// Convert PNG image to XPS
Console.WriteLine("Converting PNG to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "butterfly.png", outputPath + "butterfly.xps");
Console.WriteLine("Saved butterfly.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
///////////////////////////////////////////
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
try
{
// Convert MSWord document to XPS
Console.WriteLine("Converting DOCX to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "simple-word_2007.docx", outputPath + "simple-word_2007.xps");
Console.WriteLine("Saved simple-word_2007.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
}
////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to XPS
Console.WriteLine("Converting PDF to XPS");
pdftron.PDF.Convert.ToXps(inputPath + "newsletter.pdf", outputPath + "newsletter.xps");
Console.WriteLine("Saved newsletter.xps");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
//////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to HTML
Console.WriteLine("Converting PDF to HTML");
pdftron.PDF.Convert.ToHtml(inputPath + "newsletter.pdf", outputPath + "newsletter");
Console.WriteLine("Saved newsletter as HTML");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
//////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to EPUB
Console.WriteLine("Converting PDF to EPUB");
pdftron.PDF.Convert.ToEpub(inputPath + "newsletter.pdf", outputPath + "newsletter.epub");
Console.WriteLine("Saved newsletter.epub");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
/////////////////////////////////////////////////////////////////////
try
{
// Convert PDF document to multipage TIFF
Console.WriteLine("Converting PDF to multipage TIFF");
pdftron.PDF.Convert.TiffOutputOptions tiff_options = new pdftron.PDF.Convert.TiffOutputOptions();
tiff_options.SetDPI(200);
tiff_options.SetDither(true);
tiff_options.SetMono(true);
pdftron.PDF.Convert.ToTiff(inputPath + "newsletter.pdf", outputPath + "newsletter.tiff", tiff_options);
Console.WriteLine("Saved newsletter.tiff");
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
err = true;
}
return err;
}
static Boolean ConvertToPdfFromFile()
{
System.Collections.ArrayList testfiles = new System.Collections.ArrayList();
testfiles.Add(new ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", false));
testfiles.Add(new ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", false));
// testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", true));
bool err = false;
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
try
{
if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
{
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
}
else if (!pdftron.PDF.Convert.Printer.IsInstalled())
{
try
{
Console.WriteLine("Installing printer (requires Windows platform and administrator)");
pdftron.PDF.Convert.Printer.Install();
Console.WriteLine("Installed printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
// the function ConvertToXpsFromFile may require the printer so leave it installed
// uninstallPrinterWhenDone = true;
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: Unable to install printer.");
Console.WriteLine(e.Message);
err = true;
}
catch
{
Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.");
}
}
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: Unable to install printer.");
Console.WriteLine(e.Message);
err = true;
}
}
foreach (Testfile file in testfiles)
{
if ( Environment.OSVersion.Platform != PlatformID.Win32NT)
{
if (file.requiresWindowsPlatform)
{
continue;
}
}
try
{
using (pdftron.PDF.PDFDoc pdfdoc = new PDFDoc())
{
if (pdftron.PDF.Convert.RequiresPrinter(inputPath + file.inputFile))
{
Console.WriteLine("Using PDFNet printer to convert file " + file.inputFile);
}
pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath + file.inputFile);
pdfdoc.Save(outputPath + file.outputFile, SDFDoc.SaveOptions.e_linearized);
Console.WriteLine("Converted file: " + file.inputFile);
Console.WriteLine("to: " + file.outputFile);
}
}
catch (PDFNetException e)
{
Console.WriteLine("ERROR: on input file " + file.inputFile);
Console.WriteLine(e.Message);
err = true;
}
}
return err;
}
[STAThread]
static void Main(string [] args)
{
PDFNet.Initialize(PDFTronLicense.Key);
bool err = false;
err = ConvertToPdfFromFile();
if (err)
{
Console.WriteLine("ConvertFile failed");
}
else
{
Console.WriteLine("ConvertFile succeeded");
}
err = ConvertSpecificFormats();
if (err)
{
Console.WriteLine("ConvertSpecificFormats failed");
}
else
{
Console.WriteLine("ConvertSpecificFormats succeeded");
}
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
if (pdftron.PDF.Convert.Printer.IsInstalled())
{
try
{
Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)");
pdftron.PDF.Convert.Printer.Uninstall();
Console.WriteLine("Uninstalled Printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
}
catch
{
Console.WriteLine("Unable to uninstall printer");
}
}
}
PDFNet.Terminate();
Console.WriteLine("Done.");
}
}
}
' Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.
Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports pdftron
Imports pdftron.Common
Imports pdftron.Filters
Imports pdftron.SDF
Imports pdftron.PDF
' The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.
Namespace ConvertTestCS
Friend Class Testfile
Public inputFile, outputFile As String
Public requiresWindowsPlatform As Boolean
Public Sub New(ByVal inFile As String, ByVal outFile As String, ByVal requiresWindowsPlatform_ As Boolean)
inputFile = inFile
outputFile = outFile
requiresWindowsPlatform = requiresWindowsPlatform_
End Sub
End Class
Friend Class Class1
Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
Shared Sub New()
End Sub
' Relative path to the folder containing test files.
Private Const inputPath As String = "../../../../TestFiles/"
Private Const outputPath As String = "../../../../TestFiles/Output/"
Private Shared Function ConvertSpecificFormats() As Boolean
Dim err As Boolean = False
Try
Using pdfdoc As New PDFDoc()
Console.WriteLine("Converting from XPS")
pdftron.PDF.Convert.FromXps(pdfdoc, inputPath & "simple-xps.xps")
pdfdoc.Save(outputPath & "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused)
Console.WriteLine("Saved xps2pdf v2.pdf")
End Using
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'///////////////////////////////////////////
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
Try
Using pdfdoc As New PDFDoc()
Console.WriteLine("Converting from EMF")
pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath & "simple-emf.emf")
pdfdoc.Save(outputPath & "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused)
Console.WriteLine("Saved emf2pdf v2.pdf")
End Using
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
End If
'/////////////////////////////////////////
Try
Using pdfdoc As New PDFDoc()
' Add a dictionary
Dim [set] As New ObjSet()
Dim options As Obj = [set].CreateDict()
' Put options
options.PutNumber("FontSize", 15)
options.PutBool("UseSourceCodeFormatting", True)
options.PutNumber("PageWidth", 12)
options.PutNumber("PageHeight", 6)
' Convert from .txt file
Console.WriteLine("Converting from txt")
pdftron.PDF.Convert.FromText(pdfdoc, inputPath & "simple-text.txt", options)
pdfdoc.Save(outputPath & "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused)
Console.WriteLine("Saved simple-text.pdf")
End Using
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'/////////////////////////////////////////
Try
Using pdfdoc As New PDFDoc(inputPath & "newsletter.pdf")
' Convert PDF document to SVG
Console.WriteLine("Converting pdfdoc to SVG")
pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath & "pdf2svg v2.svg")
Console.WriteLine("Saved pdf2svg v2.svg")
End Using
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'///////////////////////////////////////////////
Try
' Convert PNG image to XPS
Console.WriteLine("Converting PNG to XPS")
pdftron.PDF.Convert.ToXps(inputPath & "butterfly.png", outputPath & "butterfly.xps")
Console.WriteLine("Saved butterfly.xps")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'/////////////////////////////////////////
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
Try
' Convert MSWord document to XPS
Console.WriteLine("Converting DOCX to XPS")
pdftron.PDF.Convert.ToXps(inputPath & "simple-word_2007.docx", outputPath & "simple-word_2007.xps")
Console.WriteLine("Saved simple-word_2007.xps")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
End If
'//////////////////////////////////////////////////////////////////
Try
' Convert PDF document to XPS
Console.WriteLine("Converting PDF to XPS")
pdftron.PDF.Convert.ToXps(inputPath & "newsletter.pdf", outputPath & "newsletter.xps")
Console.WriteLine("Saved newsletter.xps")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'////////////////////////////////////////////////////////////////////
Try
' Convert PDF document to HTML
Console.WriteLine("Converting PDF to HTML")
pdftron.PDF.Convert.ToHtml(inputPath & "newsletter.pdf", outputPath & "newsletter")
Console.WriteLine("Saved newsletter as HTML")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'////////////////////////////////////////////////////////////////////
Try
' Convert PDF document to EPUB
Console.WriteLine("Converting PDF to EPUB")
pdftron.PDF.Convert.ToEpub(inputPath & "newsletter.pdf", outputPath & "newsletter.epub")
Console.WriteLine("Saved newsletter.epub")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
'///////////////////////////////////////////////////////////////////
Try
' Convert PDF document to multipage TIFF
Console.WriteLine("Converting PDF to multipage TIFF")
Dim tiff_options As New pdftron.PDF.Convert.TiffOutputOptions()
tiff_options.SetDPI(200)
tiff_options.SetDither(True)
tiff_options.SetMono(True)
pdftron.PDF.Convert.ToTiff(inputPath & "newsletter.pdf", outputPath & "newsletter.tiff", tiff_options)
Console.WriteLine("Saved newsletter.tiff")
Catch e As PDFNetException
Console.WriteLine(e.Message)
err = True
End Try
Return err
End Function
Private Shared Function ConvertToPdfFromFile() As Boolean
Dim testfiles As New System.Collections.ArrayList()
testfiles.Add(New ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", False))
testfiles.Add(New ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", False))
testfiles.Add(New ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", False))
testfiles.Add(New ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", True))
testfiles.Add(New ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", False))
testfiles.Add(New ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", True))
testfiles.Add(New ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", False))
testfiles.Add(New ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", True))
testfiles.Add(New ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", False))
' testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
testfiles.Add(New ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", True))
Dim err As Boolean = False
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
Try
If pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet") Then
pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet")
ElseIf Not pdftron.PDF.Convert.Printer.IsInstalled() Then
Try
Console.WriteLine("Installing printer (requires Windows platform and administrator)")
pdftron.PDF.Convert.Printer.Install()
Console.WriteLine("Installed printer " & pdftron.PDF.Convert.Printer.GetPrinterName())
' the function ConvertToXpsFromFile may require the printer so leave it installed
' uninstallPrinterWhenDone = true;
Catch e As PDFNetException
Console.WriteLine("ERROR: Unable to install printer.")
Console.WriteLine(e.Message)
err = True
Catch
Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.")
End Try
End If
Catch e As PDFNetException
Console.WriteLine("ERROR: Unable to install printer.")
Console.WriteLine(e.Message)
err = True
End Try
End If
For Each file As Testfile In testfiles
If Environment.OSVersion.Platform <> PlatformID.Win32NT Then
If file.requiresWindowsPlatform Then
Continue For
End If
End If
Try
Using pdfdoc As pdftron.PDF.PDFDoc = New PDFDoc()
If pdftron.PDF.Convert.RequiresPrinter(inputPath & file.inputFile) Then
Console.WriteLine("Using PDFNet printer to convert file " & file.inputFile)
End If
pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath & file.inputFile)
pdfdoc.Save(outputPath & file.outputFile, SDFDoc.SaveOptions.e_linearized)
Console.WriteLine("Converted file: " & file.inputFile)
Console.WriteLine("to: " & file.outputFile)
End Using
Catch e As PDFNetException
Console.WriteLine("ERROR: on input file " & file.inputFile)
Console.WriteLine(e.Message)
err = True
End Try
Next file
Return err
End Function
<STAThread>
Shared Sub Main(ByVal args() As String)
PDFNet.Initialize(PDFTronLicense.Key)
Dim err As Boolean = False
err = ConvertToPdfFromFile()
If err Then
Console.WriteLine("ConvertFile failed")
Else
Console.WriteLine("ConvertFile succeeded")
End If
err = ConvertSpecificFormats()
If err Then
Console.WriteLine("ConvertSpecificFormats failed")
Else
Console.WriteLine("ConvertSpecificFormats succeeded")
End If
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
If pdftron.PDF.Convert.Printer.IsInstalled() Then
Try
Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)")
pdftron.PDF.Convert.Printer.Uninstall()
Console.WriteLine("Uninstalled Printer " & pdftron.PDF.Convert.Printer.GetPrinterName())
Catch
Console.WriteLine("Unable to uninstall printer")
End Try
End If
End If
PDFNet.Terminate()
Console.WriteLine("Done.")
End Sub
End Class
End Namespace
Die Verwaltung von PDF-Dateien kann mit der Funktion OCRInput abgeschlossen werden. Jede Seite eines Dokuments wird von der Klasse Iron Tesseract gelesen. Der Text wird dann aus den Seiten extrahiert. Eine zweite Funktion namens "AddPDF" ermöglicht es uns, geschützte Dokumente zu öffnen und stellt sicher, dass wir PDFs zu unserer Liste von Dokumenten hinzufügen können (passwort, wenn es geschützt ist). Um ein passwortgeschütztes PDF-Dokument zu öffnen, verwenden Sie das folgende Codefragment:
var Ocr = new IronTesseract(); // nothing to configure
using (var Input = new OcrInput())
{
Input.AddPdf("example.pdf", "password");
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract(); // nothing to configure
using (var Input = new OcrInput())
{
Input.AddPdf("example.pdf", "password");
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract() ' nothing to configure
Using Input = New OcrInput()
Input.AddPdf("example.pdf", "password")
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
Das Lesen und Extrahieren von Inhalten aus einer Seite einer PDF-Datei kann mit der Funktion "Addpdfpage" erreicht werden. Geben Sie nur die genaue Seitenzahl an, aus der wir den Text extrahieren wollen. mit "AddPdfPage" können Sie Text aus mehreren von Ihnen angegebenen Seiten extrahieren. IEnumerable
IEnumerable<int> numbers = new List<int> {2,8,10 };
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
//single page
Input.AddPdfPage("example.pdf",10);
//Multiple page
Input.AddPdfPages("example.pdf", numbers);
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
Result.SaveAsTextFile("ocrtext.txt");
}
IEnumerable<int> numbers = new List<int> {2,8,10 };
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
//single page
Input.AddPdfPage("example.pdf",10);
//Multiple page
Input.AddPdfPages("example.pdf", numbers);
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
Result.SaveAsTextFile("ocrtext.txt");
}
Dim numbers As IEnumerable(Of Integer) = New List(Of Integer) From {2, 8, 10}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
'single page
Input.AddPdfPage("example.pdf",10)
'Multiple page
Input.AddPdfPages("example.pdf", numbers)
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
Result.SaveAsTextFile("ocrtext.txt")
End Using
Verwenden Sie die Funktion SaveAsTextFile, um das Ergebnis direkt in einem Textdateiformat zu speichern, so dass Sie die Datei direkt in den Pfad des Ausgabeverzeichnisses herunterladen können. Um die Datei im HTML-Format zu speichern, verwenden Sie SaveAsHocrFile.
Wir können das PDFTron SDK verwenden, um Bilder aus PDF-Dateien zu extrahieren, zusammen mit ihren Positionsinformationen und DPI. Anstatt PDF-Bilder in eine Bitmap zu konvertieren, können Sie die unkomprimierten/komprimierten Bilddaten auch direkt mit elements.GetImageData() (wie im Codebeispiel zur PDF-Datenextraktion beschrieben). Erfahren Sie mehr über unsere C# PDF Library und die PDF Parsing and Content Extraction Library.
IronOCR verfügt über eine beeindruckende Anzahl von Funktionen, mit denen Sie QR-Codes und Barcodes direkt aus gescannten Dokumenten lesen können. Das folgende Codeschnipsel zeigt, wie Sie den Barcode von einem bestimmten Bild oder Dokument scannen können.
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.ReadBarCodes = true;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
Input.AddImage("barcode.gif");
var Result = Ocr.Read(Input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
}
}
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.ReadBarCodes = true;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
Input.AddImage("barcode.gif");
var Result = Ocr.Read(Input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
}
}
Dim Ocr = New IronTesseract() ' nothing to configure
Ocr.Language = OcrLanguage.EnglishBest
Ocr.Configuration.ReadBarCodes = True
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using Input = New OcrInput()
Input.AddImage("barcode.gif")
Dim Result = Ocr.Read(Input)
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
Next Barcode
End Using
Der obige Code hilft, den Barcode aus einem bestimmten Bild oder PDF-Dokument zu lesen. In einem einzigen Bild oder auf einer einzigen Seite können mehrere Barcodes gleichzeitig gelesen werden. IronOCR hat eine eigene Methode, die den Barcode liest, Ocr.Configuration.ReadBarCodes.
Die Daten werden nach dem Scannen der Eingabe in einem Objekt namens OCRResult gespeichert. Die Eigenschaft in OCRResult heißt Barcodes und enthält eine Liste aller verfügbaren Barcodedaten. Mit Hilfe einer for-each-Schleife können wir die einzelnen Daten zu den Barcodedetails abrufen. Zwei Vorgänge werden in einem einzigen Prozess abgeschlossen - das Scannen und Lesen des Barcodewertes.
Die Unterstützung von Threading-Optionen ist ebenfalls verfügbar, und es können mehrere OCR-Prozesse gleichzeitig durchgeführt werden. Darüber hinaus kann IronOCR einen genauen Bereich aus einer bestimmten Region erkennen.
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
var ContentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
Input.Add("document.png", ContentArea);
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
var ContentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
Input.Add("document.png", ContentArea);
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
Dim ContentArea = New System.Drawing.Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
Input.Add("document.png", ContentArea)
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
Das obige Codeschnipsel zeigt, wie man OCR für einen bestimmten Bereich durchführt. Sie müssen nur den rechteckigen Bereich im PDF/Bild angeben, da IronOCRs Tesseract-Engine bei der Erkennung des Textes hilft.
Eine 30-Tage-Geld-zurück-Garantie: Nach dem Kauf einer Lizenz erhalten Sie eine 30-Tage-Geld-zurück-Garantie. Innerhalb der 30 Tage, in denen Sie das Produkt zurückgeben möchten, erhalten Sie Ihr Geld zurück.
Einfache Integration: Die Integration von IronOCR in jedes Projekt und jede Umgebung ist so mühelos, dass sie in einer einzigen Codezeile erreicht werden kann, indem man es einfach als NuGet Paket. Eine andere Möglichkeit, die Umgebung zu integrieren, besteht darin, sie direkt aus dem Internet herunterzuladen.
Dauerlizenzierung: Jede erworbene Lizenz muss nicht erneuert werden.
Kostenloser Support und Produkt-Updates: Jede Lizenz wird direkt von der Gruppe unterstützt, die hinter dem Produkt steht, und beinhaltet ein Jahr lang kostenlose Produkt-Updates. Der Kauf von Erweiterungen ist jederzeit möglich.
Sofortige Lizenzen: Sobald die Zahlung eingegangen ist, werden die registrierten Lizenzschlüssel sofort verschickt.
Alle Lizenzen sind unbefristet und gelten für Entwicklung, Staging und Produktion.
Unbefristete Lizenz
Dieses Paket ermöglicht es einem einzelnen Softwareentwickler in einem Unternehmen, Iron Software an einem Ort zu nutzen. Iron Software kann in einer einzelnen Intranetanwendung, einer Webanwendung oder einem Desktop-Softwareprogramm eingesetzt werden. Es ist verboten, Lizenzen außerhalb einer Organisation oder einer Agentur/Kundenbeziehung weiterzugeben, da sie nicht übertragbar sind. Dieser Lizenztyp, wie auch alle anderen Lizenztypen, schließt ausdrücklich alle Rechte aus, die nicht ausdrücklich im Rahmen der Vereinbarung gewährt werden, ohne OEM-Weitergabe und Nutzung der Iron Software als SaaS ohne den Erwerb einer zusätzlichen Abdeckung.
Preisgestaltung: Beginnt bei $749 pro Jahr.
Unbefristete Lizenz
Diese Lizenz erlaubt es einer bestimmten Anzahl von Softwareentwicklern in einem Unternehmen, Iron Software an zahlreichen Standorten zu nutzen, maximal jedoch zehn. Iron Software kann in beliebig vielen Websites, Intranetanwendungen oder Desktop-Softwareanwendungen verwendet werden. Lizenzen sind nicht übertragbar und können nicht außerhalb einer Organisation oder einer Agentur/Kundenbeziehung weitergegeben werden. Dieser Lizenztyp, wie auch alle anderen Lizenztypen, schließt ausdrücklich alle Rechte aus, die nicht ausdrücklich im Rahmen der Vereinbarung gewährt werden, einschließlich der OEM-Weitergabe und der Nutzung der Iron Software als SaaS ohne Erwerb einer zusätzlichen Abdeckung. Diese Lizenz kann in ein einzelnes Projekt integriert werden, bis zu einer Höchstzahl von 10.
Preisgestaltung: Ab $999 pro Jahr.
Unbefristete Lizenz
Dadurch kann eine unbegrenzte Anzahl von Softwareentwicklern in einem Unternehmen Iron Software an einer unbegrenzten Anzahl von Standorten nutzen. Iron Software kann in beliebig vielen Intranetanwendungen, Desktop-Softwareanwendungen oder Websites verwendet werden. Die Lizenzen sind nicht übertragbar und können nicht außerhalb einer Organisation oder einer Agentur-/Kundenbeziehung weitergegeben werden. Dieser Lizenztyp, wie auch alle anderen Lizenztypen, schließt ausdrücklich alle Rechte aus, die nicht im Rahmen der Vereinbarung gewährt werden, einschließlich der OEM-Weitergabe und der Nutzung der Iron Software als SaaS ohne Erwerb einer zusätzlichen Abdeckung.
Preisgestaltung: Ab $5,999 pro Jahr.
Royalty-Free Redistribution — Dies erlaubt Ihnen, die Iron Software als Teil verschiedener kommerzieller Produkte zu vertreiben, die unterschiedlich verpackt sind (ohne Lizenzgebühren zahlen zu müssen) basierend auf der Anzahl der Projekte, die von der Basislizenz abgedeckt werden. Dies ermöglicht die Bereitstellung von Iron Software im Rahmen von SaaS-Softwarediensten, die auf der Anzahl der von der Basislizenz abgedeckten Projekte basiert.
Preisgestaltung: Ab 1.599 $ pro Jahr.
Beratungs- und Schulungsdienste
Maßgeschneiderte PDFTron-Lizenzen sind auf Ihre Anwendung und Ihre Geschäftsanforderungen zugeschnitten. Die Preisgestaltung ist abhängig von Ihrem Funktionsumfang
Die IronOCR Lite-Lizenz ist ein undefiniertes Paket, das einen Entwickler mit einem Jahr Support beinhaltet und etwa $749 kostet. Die IronOCR Professional-Lizenz mit 10 Entwicklerpaketen und einem Jahr Support kostet $999, während die PDFTron-Pakete wiederum nicht definiert sind. Um ein Paket zu kaufen, müssen Sie sich an das Support-Center wenden, um ein Angebot zu erhalten.
Die IronOCR Lite und Professional Pakete beinhalten OEM- oder SaaS-Service mit einer 5-Jahres-Supportoption. Die Lite-Version umfasst ein Paket für einen Entwickler mit 5-Jahres-Support und Saas- und OEM-Service und kostet $2.897 mit einer kundenspezifischen Supportoption. Die IronOCR Professional-Version umfasst ein 10-Entwickler-Paket mit 5 Jahren Support, Saas und OEM-Service und kostet $3.397. Für das 10-Entwickler-Paket von PDFTron mit einem Jahr Support, Saas und OEM-Service gibt es keinen festgelegten Preis.
IronOCR im Kontext des .NET-Frameworks liefert mit Tesseract ein einfach zu bedienendes Werkzeug, das die Unterstützung von Fotos und PDF-Dokumenten auf vielfältige Weise ermöglicht. Es bietet auch verschiedene Einstellungen zur Verbesserung der Leistung der Tesseract OCR-Bibliothek. Es wird eine Vielzahl von Sprachen unterstützt, mit der Möglichkeit, mehrere Sprachen in einem einzigen Vorgang zu verwenden. Besuchen Sie die Website des Unternehmens, um mehr über Tesseract OCR zu erfahren.
PDFTron ist eine Softwareanwendung, die verschiedene Engines verwendet, um Bilder und PDF-Dokumente zu erkennen. Außerdem bietet es verschiedene Einstellungen zur Verbesserung der OCR-Leistung und die Möglichkeit, mehrere Sprachen auszuwählen. PDFTron hat Einschränkungen bei der Verwendung von Seitenkonvertierungen. Es gibt auch verschiedene Preise für unterschiedliche Betriebssysteme.
IronOCR ist ein wettbewerbsfähiges Softwareprodukt und kann eine höhere Genauigkeit bieten als konkurrierende Marken. Bei ähnlichen Produkten ist die Erkennung minderwertiger Bilder bisweilen fehlgeschlagen, was zu unbekannten Zeichen führte. Andererseits liefert IronOCR nicht nur genaue Ergebnisse, sondern ermöglicht auch die Erkennung von Barcodedaten und das Lesen von Barcodes aus Bildern.
Die IronOCR-Pakete bieten wettbewerbsfähige Lizenzierung und Support zu einem einzigen Preis für alle Plattformen. Im Vergleich dazu sind die OCR-Produkte von PDFTron ausschließlich kundenspezifisch ausgewählt, was tendenziell teurer ist. Die Preise variieren zwischen beiden Produkten, wobei IronOCR bei einem Preis von $749 beginnt, während der Startpreis von PDFTron aufgrund der benutzerdefinierten Auswahl nicht definiert ist. Zusammenfassend lässt sich sagen, dass IronOCR ein breiteres Spektrum an Funktionen für einen niedrigeren Preis bietet.
Also, worauf warten Sie noch? Der kostenlose Test ist für alle zugänglich. Holen Sie sich die Lizenz hier und beginnen Sie sofort!
9 .NET API-Produkte für Ihre Bürodokumente