在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
OCR 代表「光學字符識別」。 這是將紙質文件或圖像轉換為可讀文本的過程。 為達成此目的,有多種方法,如掃描或透過鍵盤手動輸入。 這是為了將任何掃描檔案、PDF 或手寫文件轉換為其原始文字格式。 在刑事案件中,這個過程被證明是非常有價值的,特別是在文件受損過於嚴重無法進行人工抄錄的情況下,但可以通過OCR軟體進行掃描和識別。
隨著科技的進步和數位工具的普及應用,OCR 也被應用在其他領域,例如 Google 文件等應用程式的文件轉換,以及學術界和商業世界。 有兩種主要的 OCR 類型,「靜態」和「動態」。 最常見的類型是靜態OCR,其中整個文檔一次性掃描。 另一方面,動態 OCR 逐行掃描,並且可以處理更複雜的佈局,例如表格數據。
本文將討論兩種最常見的 OCR 和 PDF 應用程式及文件庫的比較。 這些是:
若要在 PDFTron SDK 中使用 OCR,我們必須安裝一個單獨的 OCR 模組附加工具。 這有助於 SDK 從文件中檢測文字。 它可以讓文字可選擇和可搜尋。 PDFTron SDK 支援多達 100 種語言。 PDFTron 的 OCR 引擎由 Tesseract 的開源 LSTM 神經網路支持。 PDFTron OCR 支援多種影像格式以進行文字檢測。 僅包含光柵圖像的 PDF 文件也可用於 OCR,其輸出質量取決於輸入圖像。 進行光學字符識別(OCR)的最佳圖像是具有300 DPI解析度的灰度圖像。
Iron Software 為軟體工程師提供 IronOCR for .NET,使其能在 .NET 應用程式和網站中從照片和 PDF 讀取文本內容。 該軟體有助於掃描照片中的文字和條碼,支援多種全球語言,並以純文字或結構化資料的形式輸出。 Iron Software 的 OCR 庫可以在 Web、控制台、MVC 和眾多 .NET 桌面應用程式中使用。 在商業部署的情況下,購買許可證的同時會提供開發團隊的直接協助。
打開 Visual Studio,並找到「檔案」選單。 選擇新專案,然後選擇主控台應用程式。 在本文中,我們將使用控制台應用程式來生成 PDF 文件。
在相應的文字框中輸入專案名稱並選擇文件路徑。 然後,點擊建立按鈕。 另外,選擇所需的 .NET Framework。
Visual Studio 專案現在將為選定的應用程式生成結構。
現在,專案的結構將由 Visual Studio 生成。 如果您選擇了 Windows、控制台和 Web 應用程式,則會開啟 program.cs 檔案,您可以輸入程式碼並建置/執行您的應用程式。
下一步,我們需要添加庫來測試代碼。
PDFTron OCR 的安裝是手動完成的,可以從給定的地方以 zip 格式下載。 連結. 解壓縮並將其配置到專案中。 本指南將幫助您使用 PDFTron SDK 的免費集成試用版,在 Windows 上的 .NET Framework 應用程式中執行 PDFTron 範例。 免費試用包含解決方案工程師的支援和無限次試用。
Visual Studio: 確保您的安裝中包含 .NET 桌面開發 和 .NET Framework 4.5.1+ 開發工具 工作負載。 本指南將使用 Visual Studio 2017 和 PDFTron 的 C# .NET PDF 庫於 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/
導航至提取內容的位置。 找到並進入 Samples 資料夾(PDFNET_BASE/範例). 此資料夾包含 PDFTron SDK 支援功能的多個範例代碼。
在 Visual Studio 中打開 Samples_20XX.sln。 為您的 Visual Studio 安裝選擇合適的版本。
選擇範例代碼並 將其設為啟動項目 解決方案。
這被稱為 "PDFTron Hello World" 應用程式。 如果您能開啟、儲存和關閉 PDF 文件,那麼整合剩餘的 PDFTron SDK 將很容易。
在 Visual Studio 中,以您偏好的語言創建一個 .NET Framework 主控台應用程式項目。 您可以在 Visual C# 或 Visual Basic 類別下找到它們。
進入專案的資料夾。 預設情況下,路徑應類似於:C:/Users/User_Name/source/repos/myApp
從 PDFNET_BASE 到您的專案資料夾(此資料夾將包含你的 .csproj 或 .vbproj 檔案),複製 Lib 資料夾。
在右側找到方案總管。右鍵點擊「References」選擇「Add Reference」選項。 這會打開一個參考管理器對話框。
在對話框底部,選擇「瀏覽」。 在複製的 Lib 資料夾中找到 PDFNetLoader.dll,然後將其添加到引用中。
另外,從 x86 資料夾中添加適當版本的 PDFNet.dll 作為另一個參考。(path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). 這將確保應用程式可以在 32 位元和 64 位元操作系統上運行。
IronOCR 庫可以通過四種方式安裝。
這些是:
Visual Studio 軟體提供 NuGet 套件管理器選項,以直接將套件安裝至解決方案。 截圖展示了如何打開 NuGet 套件管理器。
這將提供一個搜索框,以顯示來自NuGet網站的套件列表。在套件管理器中,我們需要搜索關鍵字"IronOCR",如下圖所示:
從上面的圖像中,我們可以看到相關搜索結果的列表。 要將套件安裝到解決方案中,我們必須選擇所需的選項。
Install-Package IronOcr 請提供內容以進行翻譯。
該套件現在將直接安裝到當前專案中,然後即可使用。
對於第三種方法,我們可以直接從網站下載NuGet套件。
您可以透過按一下此處,直接從網站下載最新的套件。連結. 按照提供的指示,在下載最新的套件後將其添加到專案中。
IronOCR 和 PDFtron OCR 都具備將影像轉換為可搜尋文字的光學字符識別技術。
將 PDF 轉換為 DOCX、DOC、HTML、SVG、TIFF、PNG、JPEG、XPS、EPUB、TXT 以及許多其他格式。
PDFDoc doc = new PDFDoc(檔案名稱);
// 將 PDF 文件轉換為 SVG
Convert.ToSvg(doc, output_filename + ".svg");
// 將 PDF 文件轉換為 XPS
Convert.ToXps(檔案名稱, 輸出檔案名稱 + ".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(檔案名稱, 輸出檔案名稱 + ".xod");
// 將 PDF 轉換為 HTML
Convert.ToHtml(檔案名, output_filename + ".html");
請提供內容以進行翻譯。
### 4.2 使用 IronOCR
```cs
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();
}
PDFDoc doc = new PDFDoc(檔案名稱);
// 將 PDF 文件轉換為 SVG
Convert.ToSvg(doc, output_filename + ".svg");
// 將 PDF 文件轉換為 XPS
Convert.ToXps(檔案名稱, 輸出檔案名稱 + ".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(檔案名稱, 輸出檔案名稱 + ".xod");
// 將 PDF 轉換為 HTML
Convert.ToHtml(檔案名, output_filename + ".html");
請提供內容以進行翻譯。
### 4.2 使用 IronOCR
```cs
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 doc As New PDFDoc(檔案名稱)
' 將 PDF 文件轉換為 SVG
Convert.ToSvg(doc, output_filename & ".svg")
' 將 PDF 文件轉換為 XPS
Convert.ToXps(檔案名稱, 輸出檔案名稱 & ".xps")
' 將 PDF 文件轉換為多頁 TIFF
Dim tiff_options As New Convert.TiffOutputOptions()
tiff_options.SetDPI(200)
tiff_options.SetDither(真)
tiff_options.SetMono(真)
Convert.ToTiff(檔案名稱, output_filename & ".tiff", tiff_options)
' 將 PDF 轉換為 XOD
Convert.ToXod(檔案名稱, 輸出檔案名稱 & ".xod")
' 將 PDF 轉換為 HTML
Convert.ToHtml(檔案名, output_filename & ".html")
### 4.2 使用 IronOCR
請提供內容以進行翻譯。 ```cs var 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
如上所示,是以 Tesseract 5 API 將圖像檔案轉換為文字的過程。 上面的代碼行用於為 Iron Tesseract 創建一個對象。 此外,為了確保我們能夠添加一個或多個圖片文件,我們創建了一個 OcrInput 對象,該對象將需要可用的圖片路徑。 在 Iron Tesseract 物件中,函數 "Read" 可用來透過解析圖片檔並將生成的結果提取到 OCR 結果中來獲取圖像。 它能從照片中提取文本並將其轉換為字串。
Tesseract可以使用 "AddMultiFrameTiff" 方法來添加多幀圖像進行此過程。 Tesseract 庫將影像中的每一幀讀取並視為一個獨立的頁面。 在進行下一幀之前,將讀取圖像的每一幀,直到成功掃描每一幀。 此方法僅支持 TIFF 圖像格式。
數據成功轉換為可編輯文本顯示在上圖中,這是IronOCR精確度的結果。
IronOCR和PDFTron OCR將PDF文件轉換為可編輯文本。 PDFTron OCR 為用戶提供了一系列選項,如保存頁面、編輯圖像、識別頁面等。此外,它還可以提供保存選項,如文件、文字、HTML 格式等。IronOCR 也允許我們將轉換後的 OCR 文件保存為 HTML、文字、PDF 等格式。
完整範例程式碼展示如何使用 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
可以使用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
使用 "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
使用 SaveAsTextFile 函數將結果直接儲存為文字檔案格式,以便您可以直接將檔案下載到輸出目錄路徑。 若要將文件保存為 HTML 格式,請使用 SaveAsHocrFile。
我們可以使用 PDFTron SDK 從 PDF 文件中提取圖像,連同它們的定位信息和 DPI。 除了將 PDF 圖像轉換為位圖之外,您還可以使用 elements.GetImageData 直接提取未壓縮/壓縮的圖像數據。() (如 PDF 資料提取程式碼範例中所述). 了解更多關於我們的 C# PDF 庫以及 PDF 解析和內容擷取庫的信息。
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
上述是有助於從給定的圖像或 PDF 文檔中讀取條碼的代碼。 在單一圖像或頁面中可以同時讀取多個條碼。 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
上述程式碼片段展示了如何對特定區域進行光學字符識別 (OCR)。 您只需指定 PDF/圖像中的矩形區域,IronOCR 的 Tesseract 引擎將幫助識別文本。
30 天退款保證: 購買授權後,您將獲得30天的退款保證。 在您希望退還產品的 30 天內,您將收到退款。
易於整合: IronOCR 與任何專案和環境的整合如此輕鬆,只需將其添加為一行程式碼即可完成。NuGet套件。 另一方面,將環境整合的另一種方法是直接從網上下載。
永久授權: 購買的每個授權均不需要續訂。
免費支援和產品更新:每個授權都將獲得產品團隊直接提供的支援,並享有一年的免費產品更新。 您可以隨時購買擴展功能。
即時授權: 一旦收到付款,註冊的授權密鑰將立即發送。
所有授權都是永久性的,適用於開發、測試和生產環境。
永久授權
此套件允許組織中的單一軟體開發人員在一個地點使用 Iron Software。 Iron Software 可以用於單一內部網路應用程式、網路應用程式或桌面軟體程式。 禁止在組織或機構/客戶關係之外共享授權,因為它們是不可轉讓的。 此授權類型與其他所有授權類型一樣,明確排除在協議中未明確授予的所有權利,不包括OEM重新分發,並且在未購買額外保障的情況下將Iron Software用作SaaS。
定價: 每年起價為 $749。
永久授權
此授權允許一個組織中的預定數量的軟體開發人員在多個地點使用Iron Software,最多可至十個。 Iron Software 可以用於您喜歡的任意多個網站、內聯網應用程序或桌面軟體應用程序。許可證不可轉讓,且不得在組織或代理/客戶關係之外共享。此許可證類型,如所有其他許可證類型,明確排除所有在協議下未明確授予的權利,包括 OEM 再分發和在未購買額外保險的情況下作為 SaaS 使用 Iron Software。 此許可證可以整合至最多10個單一專案。
價格: 每年起價 $999。
永久授權
這允許一個組織中的無限數量的軟體開發人員在無限數量的地點使用 Iron Software。 Iron Software 可以用於任意數量的內聯網應用程式、桌面軟體應用程式或網站。許可是不可轉讓的,並且不能在組織或機構/客戶關係之外分享。這種類型的許可證,如同所有其他類型的許可證明確排除協議下未授予的所有權利,包括 OEM 重發佈以及在未購買額外保障的情況下將 Iron Software 用作 SaaS。
定價: 每年起價為 $5,999。
免版稅重新分發 — 這允許您將 Iron Software 作為若干不同包裝的商業產品的一部分進行分發。(無需支付版稅)根據基礎授權涵蓋的專案數量。 這將允許在 SaaS 軟體服務中部署 Iron Software,這基於基礎許可涵蓋的專案數量。
價格: 每年起價 $1,599。
諮詢和培訓服務
PDFTron 的自定義許可證專為滿足您的應用程式和業務需求而設計。 定價取決於您的功能範圍。
IronOCR Lite 授權是一個未定義的套件,包括一位開發人員和一年的支援,費用約為 $749。 IronOCR 專業授權,包括10位開發者套件與一年的支援,費用為999美元,而PDFTron的套件則未定義。 要購買套件,您必須聯繫支援中心以獲取報價。
IronOCR Lite 和 Professional 套件包括 OEM 或 SaaS 服務,提供 5 年支援選項。 Lite 版本包括一個開發者套件,提供5年支持,SaaS和OEM服務費用為$2,897,並提供定制化支持選項。 IronOCR Professional 版本包含 10 名開發人員的套裝,提供 5 年支援、Saas 和 OEM 服務,費用為 $3,397。PDFTron 的 10 名開發人員套裝搭配一年支援、Saas 和 OEM 服務,但沒有明確的價錢。
在 .NET Framework 環境中,IronOCR 提供 Tesseract,能夠以多種方式輕鬆使用,支持照片和 PDF 文件。 它還提供了多種設置來提高 Tesseract OCR 庫的性能。 支援多種語言,並且能夠在單一操作中使用多種語言。 造訪他們的網站以了解更多有關 Tesseract OCR 的資訊。
PDFTron 是一個使用不同引擎來識別圖像和 PDF 文件的軟體應用程式。 它還提供各種設置以提高OCR處理的性能,以及選擇多種語言的選項。 PDFTron對頁面轉換的使用有限制。 它也針對不同的操作系統提供多種價格。
IronOCR 是一款具有競爭力的軟體產品,並且可以提供比競爭品牌更高的準確性。 類似產品有時無法識別低品質圖像,導致未知字符。 另一方面,IronOCR不僅提供準確的結果,還允許我們識別條碼數據並從圖像中讀取條碼的值。
IronOCR 的套件為所有平台提供具有競爭力的授權和支援,以單一價格提供。 相比之下,PDFtron 的 OCR 產品全部是專門定製選擇的,通常價格較高。這兩款產品的定價略有不同,IronOCR 的起始價格為 $749,而由於是定製選擇,PDFtron 的起始價格尚未定義。 總之,IronOCR 以較低的價格提供更廣泛的功能選擇。
那麼,你還在等什麼呢? 免費試用對所有人開放。 獲取許可證在此立即開始!