OCR signifie "Optical Character Recognition" (reconnaissance optique de caractères). Il s'agit du processus de conversion de documents papier ou d'images en texte lisible. Il existe plusieurs méthodes pour y parvenir, comme le balayage ou la saisie manuelle à l'aide d'un clavier. Ceci est fait pour convertir tous les fichiers numérisés et PDFs en leur format de texte d'origine. Ce processus s'est avéré inestimable dans les affaires pénales où les documents sont trop endommagés pour une transcription manuelle, mais peuvent être scannés et interprétés par un logiciel OCR.
Avec les progrès de la technologie et l'adoption omniprésente des outils numériques, l'OCR a également été mise en œuvre dans d'autres domaines tels que la conversion de documents sur des applications comme Google Docs, ainsi que dans les universités et le monde de l'entreprise. Il existe deux principaux types d'OCR : "statique" et "dynamique". Le type le plus courant est l'OCR statique, dans lequel le document entier est scanné en une seule fois. L'OCR dynamique, quant à lui, scanne une ligne à la fois et peut traiter des mises en page plus sophistiquées telles que des données tabulaires.
Cet article présente une comparaison entre deux des applications et bibliothèques de documents les plus répandues pour l'OCR et le PDF. Il s'agit de
PDFTron OCR
IronOCR
1.0 Introduction
1.1 Introduction et caractéristiques de PDFTron OCR
Pour utiliser l'OCR avec PDFTron SDK, nous devons installer un utilitaire complémentaire séparé pour le module OCR. Cela permet au SDK de détecter du texte dans les documents. Il peut rendre le texte sélectionnable et consultable. Le SDK PDFTron prend en charge jusqu'à 100 langues. Le moteur d'OCR de PDFTron s'appuie sur un réseau neuronal LSTM open-source de Tesseract. PDFTron OCR prend en charge plusieurs types d'images et de formats pour la détection de texte. Les fichiers PDF contenant uniquement des images matricielles sont également acceptés pour l'OCR, la qualité de sortie dépendant de l'image d'entrée. Les meilleures images pour l'OCR sont les images en niveaux de gris avec une résolution de 300 DPI.
Les caractéristiques de PDFTron OCR
Rendre les images consultables dans les documents imprimés.
Conversion d'un simple PDF en un PDF interrogeable.
Détection des informations importantes dans les documents commerciaux.
Faciliter la numérisation des livres.
Détection de numéros de véhicules à partir d'images de véhicules.
Aider les utilisateurs malvoyants.
Il devient facile de saisir des données dans plusieurs documents à partir de fichiers grâce à l'OCR.
Transférez facilement les informations des cartes de visite vers les listes de contacts.
1.2 IronOCR — ; Introduction et caractéristiques
Iron Software propose aux ingénieurs logiciels IronOCR for .NET pour lire le contenu textuel des photos et des PDF dans les applications et les sites Web .NET. Le logiciel permet de numériser des photos pour en extraire du texte et des codes-barres, prend en charge de nombreuses langues internationales et produit des sorties sous forme de texte brut ou de données structurées. La bibliothèque OCR d'Iron Software peut être utilisée dans les applications Web, console, MVC et de nombreuses applications de bureau .NET. Dans le cas d'un déploiement commercial, l'assistance directe de l'équipe de développement est fournie en même temps que les licences achetées.
IronOCR utilise le dernier moteur Tesseract 5 qui lit le texte, les codes QR et les codes-barres, à partir de n'importe quel format PDF ou. Cette bibliothèque permet d'ajouter l'OCR au bureau, aux applications web et à la console, ce qui garantit une intégration rapide.
IronOCR prend en charge 127 langues internationales. Il prend également en charge les langues et les listes de mots personnalisées.
IronOCR peut lire plus de 20 formats de codes-barres et de codes QR.
Prend en charge les formats d'image GIF et TIFF multipages.
Corrige les numérisations et les images de mauvaise qualité.
Supporte le multithreading. Il peut exécuter un ou plusieurs processus à la fois.
IronOCR peut fournir une sortie de données structurées en pages, paragraphes, lignes, mots, caractères, etc.
IronOCR prend en charge les systèmes d'exploitation tels que Windows, Linux, macOS, etc.
2. Création d'un nouveau projet dans Visual Studio
Ouvrez Visual Studio et accédez au menu Fichier. Sélectionnez un nouveau projet, puis une application console. Pour générer des documents PDF, nous utiliserons dans cet article l'application console.
Saisissez le nom du projet et sélectionnez le chemin d'accès au fichier dans la zone de texte appropriée. Cliquez ensuite sur le bouton Créer. Sélectionnez également le Framework .NET requis.
Le projet Visual Studio va maintenant générer la structure de l'application sélectionnée.
La structure du projet est maintenant générée par Visual Studio. Le fichier program.cs s'ouvrira si vous avez sélectionné l'application Windows, console ou web, afin que vous puissiez saisir le code et construire/exécuter votre application.
Pour l'étape suivante, nous devons ajouter la bibliothèque pour tester le code.
3.0 Installer
3.1 Installer PDFtron OCR
L'installation de PDFTron OCR se fait manuellement et peut être téléchargée sous forme de fichier zip à partir du lien suivant lien. Décompressez-le et configurez-le avec le projet. Ce guide vous aidera à exécuter des échantillons PDFTron à l'aide de la version d'essai intégrée gratuite du SDK PDFTron dans une application .NET Framework sous Windows. L'assistance des ingénieurs de la solution et l'utilisation illimitée de la version d'essai sont incluses dans la version d'essai gratuite.
Conditions préalables
Visual Studio: Assurez-vous que la charge de travail .NET Desktop Development et .NET Framework 4.5.1+ development tools fait partie de votre installation. Ce guide utilisera Visual Studio 2017 et la bibliothèque PDF C# .NET de PDFTron pour Windows. Téléchargez la bibliothèque en utilisant ce lien, .NET PDF SDK Télécharger.
Configuration initiale
Extrayez le dossier du fichier .zip. PDFNET_BASE est utilisé dans ce guide pour sélectionner le chemin d'accès au dossier que vous avez extrait.
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDFNET_BASE = path/@to/extraction/folder/PDFNetDotNet4/
$vbLabelText $csharpLabel
Exécuter les échantillons
Naviguez jusqu'à l'emplacement du contenu extrait. Recherchez et entrez dans le dossier Samples(PDFNET_BASE/Echantillons). Ce dossier contient de nombreux exemples de codes pour les fonctionnalités prises en charge par le SDK PDFTron.
Ouvrez Samples_20XX.sln dans Visual Studio. Choisissez une version appropriée pour votre installation de Visual Studio.
Il s'agit de l'application "PDFTron Hello World". Il est facile d'intégrer le reste du SDK PDFTron si vous pouvez ouvrir, enregistrer et fermer un document PDF.
Dans Visual Studio, créez un projet d'application console Framework .NET dans la langue de votre choix. Vous les trouverez dans la catégorie Visual C# ou Visual Basic.
Naviguez dans le dossier de votre projet. Par défaut, le chemin d'accès doit être similaire à : C:/Users/User_Name/source/repos/myApp
De PDFNET_BASE au dossier de votre projet(ce dossier contiendra votre fichier .csproj ou .vbproj)copier le dossier Lib.
Recherchez l'explorateur de solutions sur le côté droit. Sélectionnez l'option Ajouter une référence en cliquant avec le bouton droit de la souris sur Références. La boîte de dialogue du gestionnaire de référence s'ouvre.
En bas de la boîte de dialogue, sélectionnez Parcourir. Localisez le dossier Lib copié pour ajouter PDFNetLoader.dll aux références
En outre, dans le dossier x86, ajoutez la version appropriée de PDFNet.dll comme autre référence(path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). Cela permettra à l'application de fonctionner sur les systèmes d'exploitation 32 bits et 64 bits.
Cliquez sur PDFNet.dll. Veillez à ce que la propriété Copy Local soit définie sur False.
3.2 Installer IronOCR
La bibliothèque IronOCR peut être installée de quatre façons.
Il s'agit de
Utilisation de Visual Studio.
Utilisation de la ligne de commande de Visual Studio.
Téléchargement direct depuis le site NuGet.
Téléchargement direct depuis le site web d'IronPDF.
3.2.1 Utilisation de Visual Studio
Le logiciel Visual Studio propose l'option NuGet Package Manager pour installer le paquet directement dans la solution. La capture d'écran montre comment ouvrir le gestionnaire de paquets NuGet.
Ceci fournira une boîte de recherche pour afficher la liste des paquets du site web de NuGet. Dans le gestionnaire de paquets, nous devons rechercher le mot-clé "IronOCR", comme dans la capture d'écran ci-dessous :
Dans l'image ci-dessus, nous pouvons voir la liste des résultats de recherche connexes. Pour installer le paquet dans la solution, nous devons sélectionner l'option requise.
3.2.2 Utilisation de la ligne de commande de Visual Studio
Dans Visual Studio : Allez dans Outils-> Gestionnaire de paquets NuGet -> Console du gestionnaire de paquets
Saisissez l'extrait de code suivant dans l'onglet de la console du gestionnaire de paquets.
Installer le paquet IronOCR
Le paquet s'installera alors directement dans le projet en cours, qui sera alors prêt à être utilisé.
### 3.2.3 Téléchargement direct depuis le site NuGet
Pour la troisième méthode, nous pouvons télécharger le paquet NuGet directement depuis le site web
* Naviguez jusqu'à cette page[Lien](https://www.nuget.org/packages/Ironocr).
* Dans le menu de droite, assurez-vous de sélectionner l'option de téléchargement.
* Double-cliquez sur le paquet téléchargé. Il sera installé automatiquement.
* Ensuite, rechargez la solution et commencez à l'utiliser dans le projet.
### 3.2.4 Téléchargement direct à partir du site web de l'IronOCR
Vous pouvez télécharger directement le dernier paquet depuis le site web en cliquant sur le lien suivant[lien](https://ironsoftware.com/csharp/ocr/packages/IronOcr.zip). Suivez les instructions fournies pour ajouter le paquet au projet une fois que le dernier paquet a été téléchargé.
* Cliquez avec le bouton droit de la souris sur le projet dans la fenêtre de la solution.
* Sélectionnez Option Reference pour rechercher l'emplacement de la référence téléchargée.
* Cliquez ensuite sur OK pour ajouter la référence.
### 4.0 Image OCR
IronOCR et **PDFtron OCR** disposent tous deux d'une technologie OCR qui convertit les images en texte de recherche.
### 4.1 Utilisation de **PDFTron**
Convertissez les PDF en DOCX, DOC, HTML, SVG, TIFF, PNG, JPEG, XPS, EPUB, TXT et bien d'autres formats.
``` cs
PDFDoc doc = nouveau PDFDoc(nom de fichier);
// Convertir un document PDF en SVG
Convert.ToSvg(doc, nom_du_film_de_sortie + ".svg");
// Convertir un document PDF en XPS
Convert.ToXps(nom_de_fichier, nom_de_sortie + ".xps");
// Convertir un document PDF en un document TIFF multipage
Convert.TiffOutputOptions tiff_options = new Convert.TiffOutputOptions();
tiff_options.SetDPI(200);
tiff_options.SetDither(vrai);
tiff_options.SetMono(vrai);
Convert.ToTiff(nom_de_fichier, nom_de_sortie + ".tiff", options_de_tiff);
// Convertir un PDF en XOD
Convert.ToXod(nom_de_fichier, nom_de_sortie + ".xod");
// Convertir le PDF en HTML
Convert.ToHtml(nom_de_fichier, nom_de_sortie + ".html");
4.2 Utilisation de l'IronOCR
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
$vbLabelText $csharpLabel
La démonstration ci-dessus montre le processus de conversion de fichiers images en texte à l'aide de l'API Tesseract 5. La ligne de code ci-dessus a été utilisée pour créer un objet pour le Tesseract d'Iron. De plus, pour s'assurer que nous pouvons ajouter un ou plusieurs fichiers images, nous avons produit un objet OcrInput qui demandera le chemin d'accès à l'image disponible. Dans l'objet Iron Tesseract, la fonction "Read" peut être utilisée pour obtenir les images en analysant le fichier image et en extrayant le résultat produit dans le résultat de l'OCR. Il est capable d'extraire du texte des photos et de le convertir en une chaîne de caractères.
Tesseract peut être utilisé pour ajouter des images multi-trames en utilisant la méthode "AddMultiFrameTiff" pour ce processus. Chaque image est lue et traitée comme une page distincte par la bibliothèque Tesseract. Chaque trame de l'image est lue avant de passer à la trame suivante, jusqu'à ce que chaque trame ait été scannée avec succès. Le format d'image TIFF est le seul format pris en charge par cette méthode.
La conversion réussie des données en texte éditable est affichée dans l'image ci-dessus, résultat de la précision de l'IronOCR.
5.0 Fichier PDF OCR
IronOCR et PDFTron OCR convertissent les fichiers PDF en texte éditable. L'OCR de PDFTron offre à l'utilisateur une liste d'options telles que l'enregistrement de la page, l'édition de l'image, la reconnaissance de la page, etc. En outre, il peut fournir des options d'enregistrement telles que le document, le texte, le format HTML, etc. IronOCR nous permet également de sauvegarder un fichier OCR converti en HTML, texte, PDF, etc.
5.1 Utilisation de PDFTron OCR
L'exemple de code complet montre comment utiliser PDFTron OCR pour une conversion directe et de haute qualité entre PDF, XPS, EMF, SVG, TIFF, PNG, JPEG et d'autres formats d'image.
// 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
$vbLabelText $csharpLabel
5.2 Utilisation de l'IronOCR
La gestion des fichiers PDF peut être réalisée à l'aide de la fonction OCRInput. Chaque page d'un document sera lue par la classe Iron Tesseract. Le texte sera ensuite extrait des pages. Une deuxième fonction appelée "AddPDF" nous permettra d'ouvrir des documents protégés et de nous assurer que nous pouvons ajouter des PDF à notre liste de documents(mot de passe s'il est protégé). Pour ouvrir un document PDF protégé par un mot de passe, utilisez l'extrait de code ci-dessous :
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
$vbLabelText $csharpLabel
La lecture et l'extraction du contenu d'une page d'un fichier PDF peuvent être réalisées à l'aide de la fonction "Addpdfpage". Ne spécifier que le numéro de page exact à partir duquel nous voulons extraire le texte. "AddPdfPage" vous permet d'extraire du texte de plusieurs pages que vous spécifiez. IEnumerablevous permettra de spécifier efficacement de nombreuses pages. Vous devez également indiquer l'emplacement et l'extension du fichier. L'extrait de code ci-dessous en fait la démonstration :
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
$vbLabelText $csharpLabel
Utilisez la fonction SaveAsTextFile pour enregistrer directement le résultat dans un format de fichier texte afin de pouvoir télécharger directement le fichier dans le chemin du répertoire de sortie. Pour enregistrer le fichier au format HTML, utilisez SaveAsHocrFile.
6.1 Utilisation de PDFTron
Nous pouvons utiliser le SDK PDFTron pour extraire les images des fichiers PDF, ainsi que leurs informations de positionnement et leur DPI. Au lieu de convertir les images PDF en images bitmap, vous pouvez également extraire les données d'image non compressées/compressées directement à l'aide de elements.GetImageData() (décrit dans l'exemple de code d'extraction de données PDF). En savoir plus sur notre bibliothèque PDF C# et sur la bibliothèque d'analyse et d'extraction de contenu PDF.
6.2 Utilisation de l'IronOCR
IronOCR dispose d'un nombre impressionnant de fonctionnalités qui vous permettront de lire les codes QR et les codes-barres directement à partir de documents scannés. L'extrait de code ci-dessous montre comment vous pouvez scanner le code-barres d'une image ou d'un document donné.
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
$vbLabelText $csharpLabel
Le code ci-dessus permet de lire le code-barres d'une image ou d'un document PDF donné. De nombreux codes-barres peuvent être lus en même temps sur une seule image ou une seule page. IronOCR dispose d'une méthode distinctive qui lira le code-barres, Ocr.Configuration.ReadBarCodes.
Les données sont stockées dans un objet appelé OCRResult après la numérisation de l'entrée. La propriété de OCRResult s'appelle Barcodes et contient une liste de toutes les données de codes-barres disponibles. Nous pouvons obtenir chaque donnée individuelle liée aux détails du code-barres en utilisant une boucle "for-each". Deux opérations sont effectuées en un seul processus : le balayage et la lecture de la valeur du code-barres.
La prise en charge des options d'enchaînement est également disponible et plusieurs processus d'OCR peuvent être exécutés en même temps. En outre, IronOCR peut reconnaître une zone précise à partir d'une région spécifiée.
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
$vbLabelText $csharpLabel
L'extrait de code ci-dessus montre comment effectuer l'OCR sur une région distincte. Il vous suffit de spécifier la région rectangulaire dans le PDF/l'image, car le moteur Tesseract d'IronOCR aidera à reconnaître le texte.
Modèles de licence et tarification d'IronOCR et de PDFtron OCR
Modèles de licence et tarification d'IronOCR
Une garantie de remboursement de 30 jours: Une fois la licence achetée, vous bénéficiez d'une garantie de remboursement de 30 jours. Dans les 30 jours où vous souhaitez retourner le produit, vous serez remboursé.
Intégration facile: L'intégration d'IronOCR à tout projet et environnement est si facile qu'elle peut être réalisée en une seule ligne de code, simplement en l'ajoutant en tant qu'élément de l'interface utilisateurNuGet Paquet. D'autre part, une autre façon d'intégrer l'environnement est de le télécharger directement à partir du web.
Licence perpétuelle: Chaque licence achetée ne nécessite pas de renouvellement.
Support gratuit et mises à jour du produit : Chaque licence bénéficiera d'une assistance directe de la part du groupe à l'origine du produit et sera accompagnée d'un an de mises à jour gratuites du produit. Les extensions d'achat sont disponibles à tout moment.
Licences immédiates: Une fois le paiement reçu, les clés de licence enregistrées seront envoyées immédiatement.
Toutes les licences sont perpétuelles et s'appliquent au développement, à la mise en place et à la production.
La License Lite
1 développeur
1 emplacement
1 projet
Licence perpétuelle
Cette formule permet à un seul développeur de logiciels au sein d'une organisation d'utiliser Iron Software en un seul endroit. Iron Software peut être utilisé dans une application intranet, une application web ou un logiciel de bureau. Il est interdit de partager les licences en dehors d'une organisation ou d'une relation agence/client, car elles ne sont pas transférables. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, sans redistribution OEM et utilisation du Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.
Tarification: A partir de $749 par an.
La licence professionnelle
10 développeurs
10 emplacements
10 projets
Licence perpétuelle
Cette licence permet à un nombre prédéterminé de développeurs de logiciels au sein d'une organisation d'utiliser Iron Software dans de nombreux sites, jusqu'à un maximum de dix. Iron Software peut être utilisé dans autant de sites web, d'applications intranet ou de logiciels de bureau que vous le souhaitez. Les licences ne sont pas transférables et ne peuvent être partagées en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du logiciel Iron Software en tant que SaaS sans achat d'une couverture supplémentaire. Cette licence peut être intégrée à un seul projet jusqu'à un maximum de 10.
Tarification: À partir de 999 $ par an.
La License Unlimited
Nombre illimité de développeurs
Nombre illimité de lieux
Projets illimités
Licence perpétuelle
Cela permet à un nombre illimité de développeurs de logiciels d'une organisation d'utiliser Iron Software dans un nombre illimité de sites. Iron Software peut être utilisé dans autant d'applications intranet, d'applications logicielles de bureau ou de sites web que vous le souhaitez. Les licences ne sont pas transférables et ne peuvent être partagées en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits non accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du logiciel Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.
Tarification: A partir de $3,999 par an.
Royalty-Free Redistribution — ; Ceci vous permet de distribuer le Iron Software en tant qu'élément de plusieurs produits commerciaux conditionnés différemment(sans avoir à payer de redevances) en fonction du nombre de projets couverts par la licence de base. Cela permettra de déployer Iron Software dans le cadre de services logiciels SaaS, qui sont basés sur le nombre de projets couverts par la licence de base.
Tarification: À partir de 1 599 $ par an.
Modèles de licence et prix de PDFTron
PDFTron Packages(licences personnalisées)
Les prix des licences personnalisées varient - demandez un devis adapté à votre budget.
Déployer la puissante technologie de visualisation et d'édition de documents de PDFTron pour le rendu et le traitement de documents sur des plates-formes Web, mobiles et de bureau
Prêt pour l'intégration, la redistribution OEM, et les organisations avec de grands volumes de documents ou des exigences uniques
Prix multi-domaines et remises pluriannuelles avantageuses
Prise en charge des opérations hors ligne et en bac à sable
Conditions contractuelles personnalisées et complètes
Services de conseil et de formation
Les licences personnalisées de PDFTron sont adaptées à votre application et aux exigences de votre entreprise. Les prix dépendent de l'étendue de vos fonctionnalités
La License Lite d'IronOCR est un package non défini qui inclut un développeur avec un an de support, et coûte environ $749. La licence professionnelle** d'IronOCR comprenant 10 packages pour développeurs et un an d'assistance coûte 999 $, tandis que les packages de PDFTron ne sont pas définis. Pour acheter un forfait, vous devez contacter le centre d'assistance pour obtenir un devis.
Les offres IronOCR Lite et Professional comprennent un service OEM ou SaaS avec une option d'assistance de 5 ans. La version Lite comprend un package pour un développeur avec un support de 5 ans et un service Saas et OEM. Elle coûte 2 897 $ avec une option de support personnalisé. La version Professionnelle d'IronOCR comprend un package de 10 développeurs avec 5 ans d'assistance, un service Saas et un service OEM et coûte 3 397 $. L'offre de PDFTron pour 10 développeurs avec un an d'assistance, un service Saas et un service OEM n'a pas de prix défini.
7.0 Conclusion
IronOCR dans le contexte du Framework .NET fournit Tesseract qui est simple à utiliser avec la prise en charge de photos et de documents PDF réalisée de nombreuses façons. Il fournit également plusieurs paramètres permettant d'améliorer les performances de la bibliothèque Tesseract OCRs. Un grand nombre de langues sont prises en charge, avec la possibilité d'utiliser plusieurs langues dans une seule opération. Visitez leur site web pour en savoir plus sur le Tesseract OCR.
PDFTron est un logiciel qui utilise différents moteurs pour reconnaître les images et les documents PDF. Il propose également divers paramètres permettant d'améliorer les performances du processus d'OCR et offre la possibilité de sélectionner plusieurs langues. PDFTron a des limitations sur l'utilisation des conversions de pages. Il propose également différents prix pour différents systèmes d'exploitation.
IronOCR est un logiciel compétitif et peut offrir une plus grande précision que les marques concurrentes. Il est arrivé que des produits similaires ne parviennent pas à reconnaître des images de faible qualité, ce qui a donné lieu à des caractères inconnus. D'autre part, IronOCR ne fournit pas seulement des résultats précis, mais nous permet de reconnaître les données des codes-barres et d'en lire la valeur à partir d'images.
Les packages IronOCR offrent des licences et une assistance compétitives à un prix unique pour toutes les plateformes. En comparaison, les produits OCR de PDFtrons sont tous exclusivement sélectionnés sur mesure, ce qui tend à les rendre plus chers. Les prix varient entre les deux produits, IronOCR commençant à un prix de $749, tandis qu'en raison de la sélection personnalisée, le prix de départ de PDFTron n'est pas défini. En conclusion, IronOCR offre un plus grand nombre de fonctionnalités pour un prix inférieur.
Alors, qu'attendez-vous ? L'essai gratuit est ouvert à tous. Obtenir leLicence ici et commencer immédiatement!
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
< PRÉCÉDENT Alternatives à Tesseract (mise à jour 2022)
SUIVANT > Comparaison entre IronOCR et Tesseract.NET
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier