他のコンポーネントと比較

IronOCRとPDFTRON OCRの比較 IronOCRとPDFTRON OCRは、いずれも高性能な光学文字認識(OCR)ソリューションです。それぞれ独自の機能や利点があり、特定の使用ケースに対して適切な選択肢となります。 IronOCR IronOCRは、Iron Softwareの製品で、.NET Frameworkおよび他のプラットフォーム向けに設計されています。このツールは高精度のOCRを提供し、多言語サポートや画像の前処理機能が特徴です。特に以下のポイントが評価されています: - 高い認識精度 - 簡単な統合と使用 - 多言語対応 - PDF、画像ファイル、スキャンした文書などの多様な入力形式をサポート PDFTRON OCR PDFTRON OCRは、PDFファイルの操作や変換に強みを持つPDFTRONの一部として提供されます。このエンジンは、PDFの直接編集やアノテーションに対応している点が特徴です。以下の点で優れています: - PDFファイルに特化した高度な機能 - 高速な処理能力 - PDFに直接書き込みが可能 - さまざまなプラットフォームで使用可能 どちらも強力なOCRエンジンであり、プロジェクトのニーズに応じて選択することが重要です。PDFを頻繁に扱う場合や高度なPDF編集機能が必要な場合はPDFTRON OCRが適しています。一方、多言語対応や広範な互換性が求められる場合はIronOCRが優れた選択肢となるでしょう。

更新済み 9月 5, 2022
共有:

OCRは「光学文字認識」を意味します。 これは、紙の書類や画像を読み取り可能なテキストに変換するプロセスです。 これを行うためには、スキャンやキーボードを使った手動入力などの様々な方法があります。 これは、スキャンされたファイル、PDF、または手書きのドキュメントを元のテキスト形式に変換するために行われます。 このプロセスは、手動での転記ができないほど損傷した文書をスキャンしてOCRソフトウェアで解釈できる場合、刑事事件において非常に貴重であることが証明されています。

技術の進歩とデジタルツールの普及に伴い、OCRはGoogle Docsのようなアプリでのドキュメント変換の他、学術界やビジネスの世界でも導入されています。 2つの主要なOCRの種類があります、「静的」と「動的」です。 最も一般的なタイプは静的OCRで、これはドキュメント全体が一度にスキャンされる方式です。 一方、動的OCRは一度に1行をスキャンし、表形式のデータなどのより洗練されたレイアウトを処理することができます。

この記事では、OCRおよびPDFに関する最も普及しているアプリケーションとドキュメントライブラリの2つを比較します。 これらは:

  • PDFTron OCR

(As per the guideline, keeping this branded term in English)

  • IronOCR (アイアンOCR)

1.0 はじめに

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は、.NETアプリケーションやウェブサイトで写真やPDFからテキスト内容を読み取るためのIronOCR for .NETをソフトウェアエンジニアに提供します。 このソフトウェアは写真をスキャンしてテキストやバーコードを認識し、多数の世界言語に対応し、プレーンテキストまたは構造化データとして出力します。 Iron SoftwareのOCRライブラリは、Web、コンソール、MVC、および多数の.NETデスクトップアプリケーションで利用できます。 商用デプロイの場合、購入したライセンスに加えて、開発チームからの直接支援が提供されます。

  • IronOCRは、最新のTesseract 5エンジンを使用しており、あらゆるPDF形式からテキスト、QRコード、およびバーコードを読み取ります。 このライブラリを使用してデスクトップ、Webアプリケーション、およびコンソールにOCRを追加することで、迅速な統合が可能になります。
  • IronOCRは127の国際言語をサポートしています。 また、カスタム言語と単語リストをサポートします。
  • IronOCRは20以上のバーコードフォーマットおよびQRコードフォーマットを読み取ることができます。
  • 複数ページのGIFおよびTIFF画像形式をサポートします。
  • 低品質なスキャンと画像を修正します。
  • マルチスレッドをサポート。 それは一度に一つまたは複数のプロセスを実行することができます。
  • IronOCRはページ、段落、行、単語、文字などへの構造化されたデータ出力を提供できます。
  • IronOCRは、Windows、Linux、macOSなどのオペレーティングシステムをサポートしています。

Visual Studioで新しいプロジェクトを作成する

Visual Studioを開き、ファイルメニューに移動します。 新規プロジェクトを選択し、次にコンソールアプリケーションを選択します。 PDFドキュメントを生成するために、この記事ではコンソールアプリケーションを使用します。

プロジェクト名を入力し、適切なテキストボックスにファイルパスを選択してください。 次に、Create ボタンをクリックします。 また、必要な.NETフレームワークを選択してください。

Visual Studioプロジェクトは、選択したアプリケーションの構造を生成します。

プロジェクトの構造は現在、Visual Studioによって生成されます。 Windows、コンソール、およびウェブアプリケーションを選択した場合、program.csファイルが開き、コードを入力してアプリケーションをビルド/実行することができます。

次のステップとして、コードをテストするためにライブラリを追加する必要があります。

インストール 3.0

3.1 PDFtron OCRのインストール

PDFTron OCRのインストールは手動で行われ、指定されたリンクからzipファイルをダウンロードできます。 リンク. プロジェクトに解凍して設定します。 このガイドは、Windowsを使用して.NET FrameworkアプリケーションにPDFTron SDKの無料統合トライアルを実行する際に、PDFTronのサンプルを実行するのに役立ちます。 無料体験には、ソリューションエンジニアからのサポートと無制限のトライアル使用が含まれています。

前提条件

Visual Studio: インストールに.NET デスクトップ開発および.NET Framework 4.5.1+ 開発ツールワークロードが含まれていることを確認してください。 このガイドでは、Visual Studio 2017と、PDFTronのC# .NET PDFライブラリ 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/サンプル). このフォルダには、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. ダイアログの下部にある「Browse」を選択します。 Libフォルダーにコピーした「PDFNetLoader.dll」を参照に追加します

  6. さらに、x86フォルダから適切なバージョンのPDFNet.dllを別の参照として追加してください。 (path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). これは、アプリケーションが32ビットおよび64ビットOSの両方で実行されることを保証します。

  7. PDFNet.dllをクリックしてください。 そのCopy LocalプロパティをFalseに設定してください。

3.2 IronOCR のインストール

IronOCRライブラリは4つの方法でインストールできます。

これらは:

  • Visual Studio を使用して。
  • Visual Studio コマンドラインの使用。
  • NuGetウェブサイトから直接ダウンロードします。
  • IronPDFのウェブサイトから直接ダウンロード。

3.2.1 Visual Studioの使用

Visual Studioソフトウェアには、NuGetパッケージマネージャーオプションを使用してパッケージを直接ソリューションにインストールする機能があります。 このスクリーンショットは、NuGetパッケージマネージャーを開く方法を示しています。

以下は、NuGetウェブサイトからパッケージのリストを表示する検索ボックスです。パッケージマネージャーで、「IronOCR」というキーワードで検索する必要があります。以下のスクリーンショットのように行ってください。

上記の画像から、関連する検索結果のリストが表示されているのがわかります。 パッケージをソリューションにインストールするには、必要なオプションを選択する必要があります。

3.2.2 Visual Studio コマンドラインの使用

  • Visual Studio で: ツール -> NuGet パッケージ マネージャ -> パッケージ マネージャ コンソール
  • 次のコードスニペットをパッケージマネージャーコンソールタブに入力してください。 もちろんです!翻訳したいコンテンツを提供してください。それに従って正確な日本語訳を提供いたします。

Install-Package IronOcr もちろんです!翻訳したいコンテンツを提供してください。それに従って正確な日本語訳を提供いたします。

パッケージは現在のプロジェクトに直接インストールされ、その後すぐに使用できるようになります。

3.2.3 NuGetウェブサイトからの直接ダウンロード

以下の第三の方法として、NuGetパッケージをウェブサイトから直接ダウンロードできます。

  • こちらに移動してください リンク.
  • 右側のメニューから、ダウンロードパッケージオプションを選択してください。
  • ダウンロードしたパッケージをダブルクリックしてください。 自動的にインストールされます。
  • 次に、ソリューションをリロードしてプロジェクトで使用し始めます。

3.2.4 IronOCRウェブサイトからの直接ダウンロード

ウェブサイトからこのリンクをクリックして、最新のパッケージを直接ダウンロードできます。 リンク. 最新のパッケージをダウンロードしたら、プロジェクトにパッケージを追加するための指示に従ってください。

  • ソリューションウィンドウからプロジェクトを右クリックします。
  • 参照の選択オプションを使用して、ダウンロードした参照の場所を参照します。

  • 次に、参照を追加するには「OK」をクリックしてください。

4.0 OCRイメージ

IronOCRとPDFtron OCRの両方には、画像をテキスト検索に変換するOCR技術があります。

4.1 PDFTron の使用

PDFをDOCX、DOC、HTML、SVG、TIFF、PNG、JPEG、XPS、EPUB、TXT、およびその他多数の形式に変換する。

鉄道ソフトウェアの製品であるIronPDFを使用すると、高品質のPDF文書を効果的に生成および操作できます。IronPDF for .NETは使いやすいAPIを提供し、開発者がPDFファイルをプログラム内で作成、編集、および出力するための多数の機能を持っています。

主な機能には、以下が含まれます:
- HTMLからPDFへの変換
- 標準およびカスタムフォントのサポート
- PDFの結合および分割
- テキスト抽出および検索
- PDFのセキュリティ設定、パスワード保護

IronPDFは、さまざまな開発環境に統合しやすく、効率的なPDFソリューションを提供します。
鉄道ソフトウェアの製品であるIronPDFを使用すると、高品質のPDF文書を効果的に生成および操作できます。IronPDF for .NETは使いやすいAPIを提供し、開発者がPDFファイルをプログラム内で作成、編集、および出力するための多数の機能を持っています。

主な機能には、以下が含まれます:
- HTMLからPDFへの変換
- 標準およびカスタムフォントのサポート
- PDFの結合および分割
- テキスト抽出および検索
- PDFのセキュリティ設定、パスワード保護

IronPDFは、さまざまな開発環境に統合しやすく、効率的なPDFソリューションを提供します。
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'鉄道ソフトウェアの製品であるIronPDFを使用すると、高品質のPDF文書を効果的に生成および操作できます。IronPDF for.NETは使いやすいAPIを提供し、開発者がPDFファイルをプログラム内で作成、編集、および出力するための多数の機能を持っています。 主な機能には、以下が含まれます: - HTMLからPDFへの変換 - 標準およびカスタムフォントのサポート - PDFの結合および分割 - テキスト抽出および検索 - PDFのセキュリティ設定、パスワード保護 IronPDFは、さまざまな開発環境に統合しやすく、効率的なPDFソリューションを提供します。
VB   C#

PDFDoc doc = new PDFDoc(ファイル名);

// PDFドキュメントをSVGに変換

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

// PDFドキュメントをXPSに変換

Convert.ToXps (XPSに変換)(ファイル名、出力ファイル名 + ".xps");

// PDFドキュメントを複数ページTIFFに変換

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

tiff_options.SetDPI(200);

tiff_options.SetDither(True);

tiff_options.SetMono(True);

Convert.ToTiff(TIFFに変換)(ファイル名, 出力ファイル名 + ".tiff", tiffオプション);

// PDFをXODに変換

Convert.ToXod(ファイル名, output_filename + ".xod");

PDFをHTMLに変換

HTMLに変換 (Convert.ToHtml)(ファイル名, 出力ファイル名 + ".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のオブジェクトを作成するために使用されました。 さらに、1つ以上の画像ファイルを追加できるようにするために、利用可能な画像パスが必要なOcrInputオブジェクトを生成しました。 Iron Tesseract オブジェクトでは、関数「Read」を使用して画像ファイルを解析し、生成された結果をOCR結果として取得することができます。 それは写真からテキストを抽出し、文字列に変換することができます。

Tesseractは、このプロセスのために "AddMultiFrameTiff" メソッドを使用してマルチフレーム画像を追加することができます。 画像内の各フレームは、Tesseractライブラリによって個別のページとして読み取られ、処理されます。 画像の各フレームは、次のフレームに進む前に読み取られ、すべてのフレームが正常にスキャンされるまで続行します。 このメソッドでサポートされている唯一の形式はTIFF画像形式です。

データを編集可能なテキストへと変換することに成功した結果が上記の画像に表示されています。これは、IronOCRの高精度の結果です。

5.0 OCR PDF ファイル

IronOCRとPDFTron OCRは、PDFファイルを編集可能なテキストに変換します。 PDFTron OCRは、ページの保存、画像の編集、ページの認識など、ユーザーにさまざまなオプションを提供します。さらに、文書、テキスト、HTML形式などの保存オプションも提供できます。IronOCRは、変換されたOCRファイルをHTML、テキスト、PDFなどに保存することもできます。

5.1 PDFTron OCRの使用

完全なサンプルコードは、PDF、XPS、EMF、SVG、TIFF、PNG、JPEG、およびその他の画像フォーマット間で直接高品質に変換するためにPDFTron OCRをどのように使用するかを示しています。

// 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の使用

PDFファイルの管理は、OCRInput機能を使用して完了できます。 ドキュメント内のすべてのページは、Iron Tesseractクラスによって読み取られます。 テキストはその後、ページから抽出されます。 「AddPDF」と呼ばれる2番目の関数は、保護されたドキュメントを開くことを可能にし、ドキュメントのリストに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#

PDFファイルの1ページから内容を読み取って抽出するには、「Addpdfpage」関数を利用します。 抽出したいテキストのページ番号のみを指定してください。 "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の使用

PDFファイルから画像を抽出し、それらの位置情報とDPIも取得するために、PDFTron SDKを使用できます。 PDF画像をビットマップに変換する代わりに、elements.GetImageDataを使用して非圧縮/圧縮画像データを直接抽出することもできます。() (PDFデータ抽出コードサンプルで説明されています). C# PDFライブラリおよびPDF解析とコンテンツ抽出ライブラリについて詳しく学ぶ

6.2 IronOCRの使用

IronOCRには、スキャンされたドキュメントから直接QRコードやバーコードを読み取ることができる素晴らしい機能が数多く備わっています。 以下のコードスニペットは、指定された画像やドキュメントからバーコードをスキャンする方法を示しています。

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ドキュメントからバーコードを読み取るのに役立ちます。 1つの画像またはページ内で同時に多数のバーコードを読み取ることができます。 IronOCRには、バーコードを読み取る独自のメソッドがあり、それはOcr.Configuration.ReadBarCodesです。

データは入力をスキャンした後、OCRResultというオブジェクトに格納されます。 OCRResultのプロパティはBarcodesと呼ばれ、利用可能なバーコードデータのリストが含まれます。 各バーコードの詳細に関連する個々のデータを取得するために、for-eachループを利用できます。一つのプロセスで二つの操作が完了します—バーコードの値のスキャンと読み取り。

スレッドオプションのサポートも利用可能であり、複数の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や画像の長方形の領域を指定するだけで、IronOCRのTesseractエンジンがテキスト認識を補助します。

IronOCRとPDFtron OCRのライセンスモデルと価格設定

IronOCR ライセンスモデルと価格設定

30日間返金保証: ライセンスを購入すると、30日間返金保証が適用されます。 30日以内に製品を返品したい場合、全額返金いたします。

簡単な統合: IronOCRの統合は非常に簡単で、プロジェクトや環境に1行のコードを追加するだけで達成できます。 NuGet パッケージ。 一方、別の方法として、環境を統合するにはウェブから直接ダウンロードする方法もあります。

永続ライセンス: 購入した各ライセンスは更新を必要としません。

無料サポートと製品更新:すべてのライセンスには、製品の背後にいるグループからの直接サポートがあり、1年間の無料製品更新が付いてきます。 拡張機能の購入はいつでも可能です。

即時ライセンス: 支払いが確認されると、登録済みのライセンスキーが即座に送信されます。

すべてのライセンスは永続的であり、開発、ステージング、および運用に適用されます。

ライトライセンス

  • 1開発者
  • 1 つの場所
  • 1 プロジェクト
  • 永久ライセンス

    このパッケージは、組織内の単一のソフトウェア開発者が一箇所でIron Softwareを利用することを可能にします。 Iron Softwareは、単一のイントラネットアプリケーション、ウェブアプリケーション、またはデスクトップソフトウェアプログラムで利用することができます。 ライセンスは譲渡不可のため、組織または代理店/クライアント関係の外で共有することは禁止されています。 このライセンスタイプは、他のすべてのライセンスタイプと同様に、契約に明示的に付与されていないすべての権利を明示的に除外しています。OEMの再配布および追加の適用範囲を購入しないでIron SoftwareをSaaSとして利用することもこれに含まれます。

    価格: 1年間あたり$liteLicenseから始まります。

プロフェッショナルライセンス

  • 10人の開発者
  • 10 個のロケーション
  • 10プロジェクト
  • 永久ライセンス

    このライセンスにより、組織内の決められた数のソフトウェア開発者が最大10か所までの多数の場所でIron Softwareを利用することができます。 アイアンソフトウェアは、好きなだけ多くのウェブサイト、イントラネットアプリケーション、またはデスクトップソフトウェアアプリケーションで使用できます。ライセンスは譲渡不可であり、組織外または代理店/クライアント関係外で共有することはできません。このライセンスタイプは、他のすべてのライセンスタイプと同様に、契約の下で明示的に付与されていないすべての権利を明示的に除外し、OEMの再配布や追加のカバレッジを購入せずにSaaSとしてIron Softwareを利用することを含みます。 このライセンスは、最大10個の単一プロジェクトに統合することができます。

    価格: 1年間につき$999から。

アンリミテッドライセンス

  • 無制限の開発者
  • 無制限の場所
  • 無制限プロジェクト
  • 永久ライセンス

    これは、組織内の無制限の数のソフトウェア開発者が無制限の場所でIron Softwareを利用できることを許可します。 Iron Software は、イントラネットアプリケーション、デスクトップソフトウェアアプリケーション、およびウェブサイトに自由に使用できます。ライセンスは譲渡不可であり、組織外またはエージェンシー/クライアントの関係外で共有することはできません。このライセンスタイプ(すべての他のライセンスタイプと同様に)は、OEM再配布や追加カバレッジを購入しないでIron SoftwareをSaaSとして利用することを含む、契約で承認されていないすべての権利を明示的に除外します。

    価格: 年間 $2,399 から。

    ロイヤリティフリーの再配布 — これは、Iron Softwareを異なる形式でパッケージ化された複数の商用製品の一部として配布することを可能にします。 (ロイヤリティを支払う必要がなく) ベースライセンスでカバーされるプロジェクトの数に基づいて。 これは、ベースライセンスでカバーされるプロジェクト数に基づいて、SaaSソフトウェアサービス内でIron Softwareを導入できるようにします。

    価格: 年間1,599ドルから。

PDFTronのライセンスモデルと価格設定

PDFTronパッケージ(カスタムライセンス)

  • カスタムライセンスの価格は変動します。お客様の特定の予算に合った見積もりをご依頼ください。
  • ウェブ、モバイル、およびデスクトッププラットフォームでのレンダリングとドキュメント処理のために、PDFTronの強力なドキュメントビューイングおよび編集技術を展開する
  • 統合、OEM再配布、大量の文書や独自の要件のある組織に対応
  • マルチドメイン価格および有利な複数年割引
  • オフラインおよびサンドボックス化された操作がサポートされています。
  • カスタムで包括的な契約条件

  • コンサルティングおよびトレーニングサービス

    PDFTronカスタムライセンスは、あなたのアプリケーションおよびビジネス要件に合わせて調整されています。 価格は、機能の範囲によって異なります。

    IronOCR Liteライセンスは、1年間のサポート付きの一人の開発者を含む未定義のパッケージで、費用は約 $599 です。 IronOCRのプロフェッショナルライセンスには10開発者パッケージと1年間のサポートが含まれており、費用は$999です。一方、PDFTronのパッケージは不明です。 パッケージを購入するには、サポートセンターに連絡して見積もりを取得する必要があります。

IronOCRのLiteおよびProfessionalパッケージには、5年間のサポートオプション付きでOEMまたはSaaSサービスが含まれています。 Liteバージョンには、5年間のサポートとSaasおよびOEMサービスを含む1開発者パッケージが含まれており、カスタマイズされたサポートオプションで$2,897かかります。 IronOCR Professional バージョンには、10人の開発者パッケージと5年間のサポート、Saas、およびOEMサービスが含まれており、価格は$3,397です。PDFTronの10人の開発者パッケージには1年間のサポート、Saas、およびOEMサービスが含まれていますが、定められた価格はありません。

結論 7.0

.NET FrameworkのコンテキストにおけるIronOCRは、写真やPDFドキュメントのサポートを提供する使いやすいTesseractを供給します。このサポートは多様な方法で実現されます。 また、Tesseract OCRライブラリのパフォーマンスを向上させるためのいくつかの設定も提供しています。 さまざまな言語がサポートされており、1回の操作で多数の言語を使用することが可能です。 彼らのウェブサイトを訪れてTesseract OCRに関する詳細を学んでください。

PDFTronは、画像やPDFドキュメントを認識するために異なるエンジンを使用するソフトウェアアプリケーションです。 OCRプロセスのパフォーマンスを向上させるためのさまざまな設定や複数の言語を選択するためのオプションも提供しています。 PDFTronにはページ変換の使用に制限があります。 また、異なるオペレーティングシステムに対して様々な価格設定があります。

IronOCRは競争力のあるソフトウェア製品であり、競合ブランドよりも高い精度を提供できます。 類似の製品は低品質の画像を認識できず、未知の文字が発生することがあります。 一方、IronOCRは正確な結果を提供するだけでなく、バーコードデータの認識や画像からバーコードの値を読み取ることも可能にします。

IronOCR パッケージは、すべてのプラットフォームで競争力のあるライセンスおよびサポートを単一価格で提供します。 比較すると、PDFtronのOCR製品はすべてカスタム選択されており、より高価になる傾向があります。価格は両製品で異なり、IronOCRの価格は$599から始まりますが、カスタム選択のため、PDFtronの開始価格は未定義です。 結論として、IronOCRはより低価格でより多様な機能を提供します。

では、何を待っているのですか? 無料トライアルはすべての方がご利用可能です。 次の物を取得する ライセンス こちらからすぐに開始하십시오!

< 以前
Tesseract の代替案(2022年更新)
次へ >
IronOCRとTesseract.NETの比較

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 2,290,361 View Licenses >