与其他组件比较

IronOCR与PDFTRON OCR的比较

发布 2022年九月5日
分享:

OCR 表示 "光学字符识别"。 这是将纸质文件或图像转换为可读文本的过程。 有多种方法可以实现这一目标,如扫描或通过键盘手动输入。 这样做的目的是将任何扫描文件、PDF 或手写文档转换为原始文本格式。 在刑事案件中,文件损坏严重,无法进行人工转录,但可以通过 OCR 软件进行扫描和解释,在这种情况下,该流程被证明是非常有价值的。

随着技术的进步和数字工具的普及,OCR 也被应用到其他领域,如 Google Docs 等应用程序上的文档转换,以及学术界和商业界。 OCR 有两种主要类型:"静态 "和 "动态"。 最常见的类型是静态 OCR,即一次性扫描整个文档。 而动态 OCR 则是一行一行地扫描,可以处理表格数据等更复杂的布局。

本文将讨论两种最流行的 OCR 和 PDF 应用程序和文档库之间的比较。 它们是

  • PDFTron OCR
  • IronOCR

1.0 简介

1.1 PDFTron OCR 简介和功能

要在 PDFTron SDK 中使用 OCR,我们必须安装一个单独的 OCR 模块附加工具。 这有助于 SDK 检测文档中的文本。 它可以使文本具有可选择性和可搜索性。 PDFTron SDK 支持多达 100 种语言。 PDFTron OCR 引擎由来自 Tesseract 的开源 LSTM 神经网络提供支持。 PDFTron OCR 支持多种图像格式的文本检测。 只接受光栅图像的 PDF 文件进行 OCR,输出质量取决于输入图像。 OCR 的最佳图像是分辨率为 300 DPI 的灰度图像。

PDFTron OCR 的功能

  • 使图像可在印刷文件中搜索。
  • 将简单的 PDF 转换为可搜索的 PDF。
  • 从商业文件中检测重要信息。
  • 让书籍扫描更轻松。
  • 从车辆图像中检测车辆编号。
  • 帮助视障用户。
  • 使用 OCR 在多个文件中进行数据录入变得非常容易。
  • 轻松将信息从名片传输到联系人数据列表。

1.2 IronOCR — 简介和功能

Iron Software 为软件工程师提供 IronOCR for .NET,用于在 .NET 应用程序和网站中读取照片和 PDF 中的文本内容。 该软件有助于扫描照片中的文本和 BarCode,支持全球多种语言,并以纯文本或结构化数据的形式输出。 Iron Software 的 OCR 库可用于 Web、控制台、MVC 和众多 .NET 桌面应用程序。 在商业部署的情况下,在提供购买的 License 的同时,还提供开发团队的直接协助。

  • IronOCR 使用最新的 Tesseract 5 引擎,可读取任何 PDF 格式的文本、QR 码和 BarCode 或。 使用该库将 OCR 添加到桌面、网络应用程序和控制台可确保快速集成。
  • IronOCR支持127种国际语言。 它还支持自定义语言和单词表。
  • IronOCR 可读取 20 多种条形码和 QR 码格式。
  • 支持多页 GIF 和 TIFF 图像格式。
  • 纠正低质量扫描和图像。
  • 支持多线程。 它可以同时执行一个或多个进程。
  • IronOCR 可以将结构化数据输出到页面、段落、行、单词、字符等。
  • IronOCR 支持 Windows、Linux、macOS 等操作系统。

2.在 Visual Studio 中创建新项目

打开 Visual Studio,找到 "文件 "菜单。 选择新项目,然后选择控制台应用程序。 本文将使用控制台应用程序生成 PDF 文档。

Pdftron Ocr Alternatives 1 related to 2.在 Visual Studio 中创建新项目

在相应文本框中输入项目名称并选择文件路径。 然后,点击创建按钮。 同时,选择所需的 .NET Framework。

Visual Studio 项目现在将生成所选应用程序的结构。

现在,项目的结构将由 Visual Studio 生成。 如果您选择了 Windows、控制台和 Web 应用程序,program.cs 文件将打开,您可以输入代码并构建/运行您的应用程序。

Pdftron Ocr Alternatives 2 related to 2.在 Visual Studio 中创建新项目

下一步,我们需要添加库来测试代码。

3.0 安装

3.1 安装 PDFtron OCR

PDFTron OCR 的安装是手动完成的,可以从以下地址下载压缩包 链接. 解压缩并与项目一起配置。 本指南将帮助您使用 PDFTron SDK 的免费集成试用版将 PDFTron 样本执行到使用 Windows 的 .NET Framework 应用程序中。 免费试用包括解决方案工程师的支持和无限次试用。

先决条件

Visual Studio: 确保 .NET 桌面开发.NET Framework 4.5.1+ 开发工具 工作负载是您安装的一部分。 本指南将使用 Visual Studio 2017 和 PDFTron 的 C# .NET PDF Library for Windows。 使用此链接下载该库、 .NET PDF SDK 下载.

初始设置

从 .zip 文件中提取文件夹。本指南中使用 PDFNET_BASE 来选择进入您解压缩的文件夹的路径。

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/
VB   C#

运行样本

导航至提取内容的位置。 查找并进入样本文件夹(PDFNET_BASE/Samples). 本文件夹包含 PDFTron SDK 所支持功能的大量示例代码。

  1. 在 Visual Studio 中打开 Samples_20XX.sln。 选择适合您的 Visual Studio 安装的版本。

  2. 选择示例代码和 将其设置为启动项目 为解决方案。

  3. 运行项目。

集成到您的应用程序中

这就是所谓的 "PDFTron Hello World "应用程序。 如果您能打开、保存和关闭 PDF 文档,就能轻松集成 PDFTron SDK 的其他部分。

  1. 在 Visual Studio 中,用您喜欢的语言创建一个 .NET Framework 控制台应用程序项目。 您可以在 Visual C# 或 Visual Basic 类别下找到它们。

  2. 导航到您项目的文件夹中。 默认情况下,路径应类似于:C:/Users/User_Name/source/repos/myApp

  3. 从 PDFNET_BASE 到您的项目文件夹(该文件夹将包含您的 .csproj 或 .vbproj 文件)复制 Lib 文件夹。

  4. 在右侧找到解决方案资源管理器。右键单击 "引用",选择 "添加引用 "选项。 这将打开一个引用管理器对话框。

  5. 在对话框底部,选择浏览。 找到复制的 Lib 文件夹,将 PDFNetLoader.dll 添加到引用中

  6. 此外,从 x86 文件夹中添加合适版本的 PDFNet.dll 作为另一个参考资料(path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). 这将确保应用程序可以在 32 位和 64 位操作系统上运行。

  7. 点击 PDFNet.dll。 确保将 "复制本地 "属性设置为 "假"。
    Pdftron Ocr Alternatives 3 related to 集成到您的应用程序中

3.2 安装 IronOCR

IronOCR 库可以通过四种方式安装。

它们是

  • 使用 Visual Studio。
  • 使用 Visual Studio 命令行
  • 直接从 NuGet 网站下载。
  • 直接从 IronPDF 网站下载。

3.2.1 使用 Visual Studio

Visual Studio 软件提供了 NuGet 软件包管理器选项,可直接将软件包安装到解决方案中。 截图演示了如何打开 NuGet 包管理器。

Pdftron Ocr Alternatives 4 related to 3.2.1 使用 Visual Studio

这将提供一个搜索框,显示 NuGet 网站上的软件包列表。在软件包管理器中,我们需要搜索关键字 "IronOCR",如下截图所示:

Pdftron Ocr Alternatives 5 related to 3.2.1 使用 Visual Studio

从上图中,我们可以看到相关搜索结果的列表。 要将软件包安装到解决方案中,我们必须选择所需的选项。

3.2.2 使用 Visual Studio 命令行

  • 在 Visual Studio 中转到工具-> NuGet软件包管理器 -> 软件包管理器控制台
  • 将随后的代码片段输入软件包管理器控制台选项卡。

安装-打包 IronOcr


现在,软件包将直接安装到当前项目中,然后即可使用。

### 3.2.3 从 NuGet 网站直接下载

对于第三种方法,我们可以直接从网站上下载 NuGet 软件包
* 导航至[链接](https://www.nuget.org/packages/Ironocr).
* 从右侧菜单中,确保选择下载软件包选项。
* 双击下载的软件包。 它将自动安装。
* 接下来,重新加载解决方案并开始在项目中使用。

### 3.2.4 从 IronOCR 网站直接下载

您可以点击以下链接直接从网站下载最新软件包[链接](https://ironsoftware.com/csharp/ocr/packages/IronOcr.zip). 下载最新软件包后,请按照提供的说明将软件包添加到项目中。
* 右键单击解决方案窗口中的项目。
* 选择 "选项参考资料 "浏览下载参考资料的位置。
* 然后,单击 "确定 "添加引用。

### 4.0 OCR 图像

IronOCR 和 **PDFtron OCR** 都具有 OCR 技术,可以将图像转换为文本搜索。

### 4.1 使用**PDFTron**

将 PDF 转换为 DOCX、DOC、HTML、SVG、TIFF、PNG、JPEG、XPS、EPUB、TXT 和许多其他格式。

``` cs

PDFDoc doc = new PDFDoc(文件名);

// 将 PDF 文档转换为 SVG

Convert.ToSvg(doc, output_filename + ".svg");

// 将 PDF 文档转换为 XPS

Convert.ToXps(filename, output_filename + ".xps");

// 将 PDF 文档转换为多页 TIFF 文件

Convert.TiffOutputOptions tiff_options = new Convert.TiffOutputOptions();

tiff_options.SetDPI(200);

tiff_options.SetDither(真);

tiff_options.SetMono(真);

Convert.ToTiff(文件名, output_filename + ".tiff", tiff_options);

// 将 PDF 转换为 XOD

Convert.ToXod(filename, output_filename + ".xod");

// 将 PDF 转换为 HTML

Convert.ToHtml(文件名, output_filename + ".html");

4.2 使用 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
VB   C#

上面演示的是使用 Tesseract 5 API 将图像文件转换为文本的过程。 上述代码行用于为 Iron Tesseract 创建一个对象。 此外,为了确保我们能够添加一个或多个图片文件,我们制作了一个 OcrInput 对象,该对象需要可用的图片路径。 在 Iron Tesseract 对象中,可以使用函数 "Read "通过解析图片文件获取图片,并将生成的结果提取到 OCR 结果中。 它能够从照片中提取文本并将其转换为字符串。

在此过程中,可以使用 "AddMultiFrameTiff"方法利用 Tesseract 添加多帧图像。 Tesseract 库会读取图像中的每一帧,并将其视为一个不同的页面。 先读取图像的每一帧,然后再读取下一帧,直到成功扫描每一帧为止。 本方法只支持 TIFF 图像格式。

Pdftron Ocr Alternatives 6 related to 4.2 使用 IronOCR

将数据成功转换为可编辑文本的结果显示在上图中,这是 IronOCR 精确度的结果。

5.0 OCR PDF 文件

IronOCR 和 PDFTron OCR 可将 PDF 文件转换为可编辑的文本。 PDFTron OCR 可为用户提供一系列选项,如保存页面、编辑图像、识别页面等。此外,它还可以提供文档、文本、HTML 格式等保存选项。IronOCR 还允许我们将转换后的 OCR 文件保存为 HTML、文本、PDF 等格式。

5.1 使用 PDFTron OCR

完整的示例代码展示了如何使用 PDFTron OCR 在 PDF、XPS、EMF、SVG、TIFF、PNG、JPEG 和其他图像格式之间进行直接、高质量的转换。

// 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
VB   C#

5.2 使用 IronOCR

可使用 OCRInput 功能完成 PDF 文件的管理。 文档中的每一页都将由 Iron Tesseract 类阅读。 然后将从网页中提取文本。 第二个名为 "AddPDF "的功能将允许我们打开受保护的文档,并确保我们可以将 PDF 添加到我们的文档列表中(如果密码受到保护). 要打开受密码保护的 PDF 文档,请使用下面的代码片段:

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
VB   C#

利用 "Addpdfpage "功能可以阅读和提取 PDF 文件中某一页的内容。 只需指定我们希望从中提取文本的准确页码。 "AddPdfPage "可让您从指定的多个页面中提取文本。 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
VB   C#

使用 SaveAsTextFile 功能可直接将结果存储为文本文件格式,这样您就可以直接将文件下载到输出目录路径。 要将文件保存为 HTML 格式,请使用 SaveAsHocrFile。

6.1 使用 PDFTron

我们可以使用 PDFTron SDK 从 PDF 文件中提取图像及其定位信息和 DPI。 您也可以使用 elements.GetImageData 直接提取未压缩/已压缩的图像数据,而不是将 PDF 图像转换为位图。() (中描述的 PDF 数据提取代码示例). 进一步了解我们的 C# PDF 库和 PDF 解析与内容提取库。

6.2 使用 IronOCR

IronOCR 拥有大量令人印象深刻的功能,可以让您直接从扫描的文档中读取 QR 码和 BarCode。 下面的代码片段演示了如何从给定的图像或文档中扫描 BarCode。

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
VB   C#

以上是有助于从给定图像或 PDF 文档中读取 BarCode 的代码。 在单个图像或页面中可同时读取众多条形码。 IronOCR 有一个与众不同的方法可以读取条形码,即 Ocr.Configuration.ReadBarCodes。

扫描输入内容后,数据将存储在一个名为 OCRResult 的对象中。 OCRResult 中的属性名为 BarCode,其中将列出所有可用的条形码数据。 我们可以通过使用 for-each 循环来获取与条形码详细信息相关的每个单独数据。扫描和读取条形码的值这两个操作在一个流程中完成。

IronOCR 还支持线程选项,可以同时完成多个 OCR 进程。此外,IronOCR 还能识别指定区域中的精确区域。

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
VB   C#

上面的代码片段演示了如何对一个不同的区域执行 OCR。 您只需指定 PDF/图片中的矩形区域,因为 IronOCRs Tesseract 引擎将帮助识别文本。

IronOCR 和 PDFtron OCR 许可证模式和定价

IronOCR 许可证模式和定价

30 天退款保证: 一旦购买许可证,您将获得 30 天退款保证。 在您希望退货的 30 天内,您将收到退款。

轻松集成: IronOCR 与任何项目和环境的集成都非常轻松,只需在一行代码中将其添加为NuGet包装 另一方面,集成环境的另一种方法是从网上直接下载。

永久许可: 购买的每个许可都无需更新。

免费支持和产品更新:每个许可证都将直接获得产品背后团队的支持,并附带一年的免费产品更新。 可随时购买扩展功能。

即时许可证: 收到付款后,将立即发送注册许可证密钥。

所有许可证均为永久许可证,适用于开发、暂存和生产。

Lite License

  • 一位开发者
  • 1 位置
  • 1 个项目
  • 永久许可证

    该软件包允许企业中的单个软件开发人员在一个位置使用 Iron Software。 Iron Software 可用于单个内联网应用程序、网络应用程序或桌面软件程序。 禁止在组织或代理/客户关系之外共享许可证,因为许可证是不可转让的。 本许可类型与所有其他许可类型一样,明确排除本协议未明确授予的所有权利,不进行 OEM 再分发,也不在不购买额外保险的情况下将 Iron Software 作为 SaaS 使用。

    定价: 每年 $749 起。

专业许可证

  • 10位开发者
  • 10个位置
  • 10个项目
  • 永久许可证

    该许可证允许一个组织中预定数量的软件开发人员在多个地点使用 Iron Software,最多不超过 10 人。 Iron Software 可用于任意数量的网站、内网应用程序或桌面软件应用程序。许可证不可转让,也不能在组织或代理/客户关系之外共享。本许可类型与所有其他许可类型一样,明确排除本协议未明确授予的所有权利,包括 OEM 再分发和在未购买额外保险的情况下将 Iron Software 作为 SaaS 使用。 该许可证可与单个项目集成,最多可集成 10 个项目。

    定价: 每年 999 美元起。

无限许可证

  • 无限开发者
  • 无限位置
  • 无限项目
  • 永久许可证

    这样,企业中数量不限的软件开发人员就可以在无限多的地点使用 Iron Software。 Iron Software 可用于任意数量的内网应用程序、桌面软件应用程序或网站。许可证不得转让,也不得在组织或代理/客户关系之外共享。本许可类型与所有其他许可类型一样,明确排除本协议未授予的所有权利,包括 OEM 再分发和在未购买额外保险的情况下将 Iron Software 作为 SaaS 使用。

    定价: 每年 $5,999 起。

    Royalty-Free Redistribution — 这允许您将 Iron Software 作为几种不同包装的商业产品的一部分进行发布(无需支付版税)基于基本许可证所涵盖的项目数量。 这样,就可以在 SaaS 软件服务中部署 Iron Software,这是以基本许可证所涵盖的项目数量为基础的。

    定价: 每年 1599 美元起。

    Pdftron Ocr Alternatives 7 related to 无限许可证

PDFTron 许可证模式和定价

PDFTron 软件包(定制许可证)

  • 定制许可证的价格各不相同,请根据您的具体预算进行报价。
  • 部署 PDFTron 强大的文档查看和编辑技术,以便在网络、移动和桌面平台上进行渲染和文档处理
  • 可用于集成、OEM 再分发以及具有大量文件或特殊要求的组织
  • 多域定价和优惠的多年折扣
  • 支持离线和沙盒操作
  • 定制、全面的合同条款
  • 咨询和培训服务

    PDFTron 定制许可证可根据您的应用程序和业务需求量身定制。 价格取决于您的功能范围。

    Pdftron Ocr Alternatives 8 related to PDFTron 软件包(定制许可证)

    IronOCR Lite许可证是一个未定义的软件包,包括一名开发人员和一年的支持,价格约为 $749。 IronOCR 专业许可证包括 10 个开发者软件包和一年的支持服务,价格为 999 美元,而 PDFTron 软件包同样没有定义。 要购买软件包,您必须联系支持中心获取报价。

IronOCR LiteProfessional套餐包括 OEM 或 SaaS 服务,并提供 5 年支持选项。 Lite版本包括一个开发人员包,提供 5 年支持,Saas 和 OEM 服务费用为 2,897 美元,提供定制支持选项。 IronOCR 专业版包括10个开发人员包,提供5年支持、Saas和OEM服务,价格为3397美元。PDFTron 的 10 个开发人员套餐包括一年支持、Saas 和 OEM 服务,没有明确的价格。

7.0 结论

IronOCR 在 .NET Framework 上下文中提供了 Tesseract,可以直接使用,并通过多种方式实现对照片和 PDF 文档的支持。 此外,它还提供了几种提高 Tesseract OCR 库性能的设置。 支持多种语言,并能在一次操作中使用多种语言。 访问他们的网站,了解有关 Tesseract OCR 的更多信息。

PDFTron 是一款使用不同引擎识别图像和 PDF 文档的软件应用程序。 它还提供了各种设置,以提高 OCR 过程的性能,并可选择多种语言。 PDFTron 对页面转换的使用有限制。 此外,还要针对不同的操作系统制定不同的价格。

IronOCR 是一款具有竞争力的软件产品,可以提供比竞争品牌更高的准确性。 同类产品有时无法识别低质量图像,导致出现未知字符。 另一方面,IronOCR 不仅能提供准确的结果,还能让我们识别条形码数据,并从图像中读取条形码的值。

IronOCR 软件包以单一价格为所有平台提供有竞争力的许可和支持。 相比之下,PDFtrons 的 OCR 产品都是专门定制的,价格往往更高。两种产品的定价各不相同,IronOCR 的起价为 $749,而 PDFTron 由于是定制选择,起价未定。 总之,IronOCR 以较低的价格提供了更丰富的功能。

那么,您还在等什么呢? 免费试用对所有人开放。 获取许可证在此立即开始!

< 前一页
Tesseract替代方案(2022更新)
下一步 >
IronOCR与Tesseract.NET的比较

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 2,698,613 查看许可证 >