在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
C# OCR库
using IronOcr;
string imageText = new IronTesseract().Read(@"images\image.png").Text;
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// OCR entire document
ocrInput.LoadPdf("example.pdf", Password: "password");
int[] pages = { 1, 2, 3, 4, 5 };
// Alternatively OCR selected page numbers
ocrInput.LoadPdfPages("example.pdf", pages, Password: "password");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\imageWithBarcode.png");
var ocrResult = ocrTesseract.Read(ocrInput);
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
ocrTesseract.Language = OcrLanguage.Arabic;
using (var ocrInput = new OcrInput())
{
ocrInput.LoadImage(@"images\arabic.gif");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
}
// Example with a Custom Trained Font Being used:
var ocrTesseractCustomerLang = new IronTesseract();
ocrTesseractCustomerLang.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata");
ocrTesseractCustomerLang.AddSecondaryLanguage(OcrLanguage.EnglishBest);
using (var ocrInput = new OcrInput())
{
ocrInput.LoadPdf(@"images\mixed-lang.pdf");
var ocrResult = ocrTesseractCustomerLang.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
}
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
ocrInput.Deskew();
ocrInput.DeNoise();
ocrInput.Despeckle();
ocrInput.EnhanceResolution(225);
ocrInput.Sharpen();
ocrInput.Erode();
ocrInput.Dilate();
ocrInput.Scale(200);
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
// Fast Dictionary
ocrTesseract.Language = OcrLanguage.EnglishFast;
// Turn off unneeded options
ocrTesseract.Configuration.ReadBarCodes = false;
// Assume text is laid out neatly in an orthogonal document
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// First load all image(s)
ocrInput.LoadImage(@"images\image.png");
// Note: You don't need all of them; most users only need Deskew() and occasionally DeNoise()
ocrInput.WithTitle("My Document");
ocrInput.Binarize();
ocrInput.Contrast();
ocrInput.Deskew();
ocrInput.DeNoise();
ocrInput.Despeckle();
ocrInput.Dilate();
ocrInput.EnhanceResolution(300);
ocrInput.Invert();
ocrInput.Rotate(90);
ocrInput.Scale(150);
ocrInput.Sharpen();
ocrInput.ToGrayScale();
ocrInput.Erode();
// WIZARD - If you are unsure use the debug-wizard to test all combinations:
string codeToRun = OcrInputFilterWizard.Run(@"images\image.png", out double confidence, ocrTesseract);
Console.WriteLine(codeToRun);
// Optional: Export modified images so you can view them.
foreach (var page in ocrInput.GetPages())
{
page.SaveAsImage($"filtered_{page.Index}.bmp");
}
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using IronSoftware.Drawing;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage("blue_and_pink.png");
ocrInput.WithTitle("Recolored");
ocrInput.ReplaceColor(Color.Pink, Color.White, 10);
// Pink detection has 10% tolerance
ocrInput.ReplaceColor(Color.Blue, Color.Black, 5);
// Blue detection has 5% tolerance
// Export the modified image so you can manually inspect it.
foreach (var page in ocrInput.GetPages())
{
page.SaveAsImage($"black_and_white_page_{page.Index}.bmp");
}
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using IronSoftware.Drawing;
// We can delve deep into OCR results as an object model of
// Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs/
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using var ocrInput = new OcrInput();
var pages = new int[] { 1, 2 };
ocrInput.LoadImageFrames("example.tiff", pages);
OcrResult ocrResult = ocrTesseract.Read(ocrInput);
foreach (var page in ocrResult.Pages)
{
// Page object
int PageNumber = page.PageNumber;
string PageText = page.Text;
int PageWordCount = page.WordCount;
// null if we dont set Ocr.Configuration.ReadBarCodes = true;
OcrResult.Barcode[] Barcodes = page.Barcodes;
AnyBitmap PageImage = page.ToBitmap(ocrInput);
int PageWidth = page.Width;
int PageHeight = page.Height;
double PageRotation = page.Rotation; // angular correction in degrees from OcrInput.Deskew()
foreach (var paragraph in page.Paragraphs)
{
// Pages -> Paragraphs
int ParagraphNumber = paragraph.ParagraphNumber;
string ParagraphText = paragraph.Text;
AnyBitmap ParagraphImage = paragraph.ToBitmap(ocrInput);
int ParagraphX_location = paragraph.X;
int ParagraphY_location = paragraph.Y;
int ParagraphWidth = paragraph.Width;
int ParagraphHeight = paragraph.Height;
double ParagraphOcrAccuracy = paragraph.Confidence;
OcrResult.TextFlow paragrapthText_direction = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Pages -> Paragraphs -> Lines
int LineNumber = line.LineNumber;
string LineText = line.Text;
AnyBitmap LineImage = line.ToBitmap(ocrInput);
int LineX_location = line.X;
int LineY_location = line.Y;
int LineWidth = line.Width;
int LineHeight = line.Height;
double LineOcrAccuracy = line.Confidence;
double LineSkew = line.BaselineAngle;
double LineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Pages -> Paragraphs -> Lines -> Words
int WordNumber = word.WordNumber;
string WordText = word.Text;
AnyBitmap WordImage = word.ToBitmap(ocrInput);
int WordX_location = word.X;
int WordY_location = word.Y;
int WordWidth = word.Width;
int WordHeight = word.Height;
double WordOcrAccuracy = word.Confidence;
foreach (var character in word.Characters)
{
// Pages -> Paragraphs -> Lines -> Words -> Characters
int CharacterNumber = character.CharacterNumber;
string CharacterText = character.Text;
AnyBitmap CharacterImage = character.ToBitmap(ocrInput);
int CharacterX_location = character.X;
int CharacterY_location = character.Y;
int CharacterWidth = character.Width;
int CharacterHeight = character.Height;
double CharacterOcrAccuracy = character.Confidence;
// Output alternative symbols choices and their probability.
// Very useful for spellchecking
OcrResult.Choice[] Choices = character.Choices;
}
}
}
}
}
using IronOcr;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\page1.png");
ocrInput.LoadImage(@"images\page2.bmp");
var page = new int[]{ 2, 3 };
ocrInput.LoadImageFrames(@"images\page3.tiff", page);
ocrInput.Deskew();
var ocrResult = ocrTesseract.Read(ocrInput);
ocrResult.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
// This is done by default and can be omitted:
// ocrTesseract.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract()
{
Language = OcrLanguage.EnglishBest,
Configuration = new TesseractConfiguration()
{
ReadBarCodes = false,
RenderHocr = true,
BlackListCharacters = "`ë|^",
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
}
};
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
using IronSoftware.Drawing;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// A 41% improvement on speed by specifiying a pixel region
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
ocrInput.LoadImage("img/example.png", ContentArea);
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImageFrame("images/multiframe.tiff", 1);
var ocrResult = ocrTesseract.Read(ocrInput);
ocrResult.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.TargetDPI = 300;
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("scan.pdf");
// Image processing is automatically multi-threaded
ocrInput.Deskew();
// OCR reading is automatically multi-threaded too
var ocrResult = ocrTesseract.Read(ocrInput);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
ocrTesseract.OcrProgress += (_, ocrProgressEventsArgs) =>
{
Console.WriteLine(ocrProgressEventsArgs.ProgressPercent + "% " + ocrProgressEventsArgs.Duration.TotalSeconds + "s");
};
using var input = new OcrInput();
input.LoadPdf("large.pdf");
// Progress events will fire during the read operation even if the main thread is blocked.
var result = ocrTesseract.Read(input);
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
var pages = new int[] { 1, 2 };
ocrInput.LoadImageFrames("images/multiframe.tiff", pages);
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
using IronOcr;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadPdf("scan.pdf", Password: "password");
// Clean up twisted pages
ocrInput.Deskew();
var ocrResult = ocrTesseract.Read(ocrInput);
ocrResult.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
using System;
var ocrTesseract = new IronTesseract();
ocrTesseract.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata");
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
Console.WriteLine(ocrResult.Text);
//PM> Install-Package IronOcr.Languages.Arabic
//PM> Install-Package IronOcr.Languages.Chinese
using IronOcr;
using System;
var Ocr = new IronTesseract();
// Add a primary language (Default is English)
Ocr.Language = OcrLanguage.English;
// Add as many secondary languages as you like
Ocr.AddSecondaryLanguage(OcrLanguage.Arabic);
Ocr.AddSecondaryLanguage(OcrLanguage.ChineseSimplified);
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var Result = Ocr.Read(ocrInput);
Console.WriteLine(Result.Text);
using IronOcr;
using IronSoftware.Drawing;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
ocrInput.LoadImage(@"images\image.png");
var ocrResult = ocrTesseract.Read(ocrInput);
foreach (var page in ocrResult.Pages)
{
foreach (var word in page.Words)
{
word.ToBitmap(ocrInput).SaveAs($"page{page.PageNumber}_word{word.WordNumber}.png", AnyBitmap.ImageFormat.Png);
}
}
在我们日益数字化的世界里,将扫描文档转换为可编辑格式的能力已成为个人和专业用途的重要工具。无论您是要从打印页面中提取重要信息,还是要将手写笔记转化为数字文档,将文档扫描为可编辑格式都能为您节省时间和精力。
在本文中,我们将了解扫描成可编辑格式的概念,并使用免费的在线文档 OCR(光学字符识别) 工具,帮助您毫不费力地完成这项任务。此外,我们还将介绍 IronOCR,这是一款为寻求更强大功能的用户提供的高级解决方案。
在进一步了解之前,我们先来了解一下 "扫描为可编辑内容"的含义。从本质上讲,它是将图像或扫描文档(通常是不可编辑的格式,如 Adobe Acrobat PDF 文件或图像文件)转换成一种可以轻松编辑、搜索和操作文本的形式。
许多企业和个人都有成堆的印刷文件,他们希望将这些文件转换成数字文件,以便于访问和搜索。
当你扫描文档或拍摄文本图片时,无论是 Microsoft Word 文档表格,还是某些字符间距紧凑的重要原始文档,通常都会变成静态图像,而扫描为可编辑内容工具可以让你将此图像转换为可编辑格式,以便根据需要进行修改。
将扫描数据转换为可编辑文本对于数据分析至关重要,尤其是在处理大量信息时。
将纸质文件转换为可编辑的文本文件,可以更轻松地组织、存储和检索信息。
IronOCR 是一款面向 .NET 开发人员的专业、完整的 OCR 软件程序和库,具有先进的 OCR 功能、卓越的准确性和广泛的格式支持。
IronOCR 是一款多功能工具,可将图像中的打印或手写文本转换为可编辑、可阅读的文本,让您高效地工作。它非常适合将扫描文件转化为可编辑、搜索或整理的文本。
下面是 IronOCR 如何将扫描内容转化为可编辑文本:
兼容性: 它可用于不同类型的电脑和不同类型的软件。因此,无论你使用的是 Windows PC 还是 Mac,甚至是 Azure 或 AWS 等云平台,IronOCR 都能成为你的得力助手。
OCR 引擎: IronOCR 拥有一个名为 Tesseract 的出色引擎,它在识别图像文本方面表现出色。该引擎可以理解各种语言和字体的文本。
文本和条形码阅读: IronOCR 还能理解条形码和 QR 码。因此,如果你的文档带有条形码或 QR 码,IronOCR 就能读取它们。
专业文档: 它擅长理解收据、支票等专业文档。 (支票)和发票。如果您有一大堆这些文件,IronOCR 可以让您轻松管理它们。
计算机视觉: IronOCR 可以使用 "计算机视觉 "在棘手的图像中找到文本,即使文本位于奇怪的地方或处于奇怪的角度。这就像为你的电脑配备了一双超级智能的眼睛。
滤镜: 它还能 "清理 "图像,使其更适合阅读。把它想象成一个工具,可以锐化模糊的图片,提高图片质量,并去除图片中不需要的东西。
结构化数据输出: 在读取文本后,它会将文本整齐地整理成页面、块、段落、行、单词和字符。这种文本组织方式可方便你处理文本。
虽然免费在线工具如 在线 OCR IronOCR 适用于从扫描件中提取文本进行编辑的基本任务,它将游戏提升到了一个新的高度。在 OCR 程序的领域中,浏览复杂的内容往往会让人感觉任务艰巨。许多用户都会从 "文件菜单 "中搜索解决方案,然后从 "Windows 开始菜单 "中打开 ABBYY FineReader 程序。ABBYY FineReader是一款著名的OCR工具,在OCR领域享有盛誉。
使用时 ABBYY FineReader用户点击 "扫描"按钮,即可在 ABBYY FineReader 窗口内启动 OCR 程序。这款广受欢迎的 OCR 程序拥有各种特性和功能,是 OCR 领域的有力竞争者。
然而,当与 IronOCR 进行正面比较时,差异就开始显现出来了。IronOCR 是一个多功能的 C# .NET 库,是一个强有力的替代品。它在以下几个方面超越了 ABBYY FineReader
高精度: IronOCR 以其高精度而闻名,即使是复杂的草书或斜体字体和布局,也能确保精确的文本识别。
高级图像预处理: 它可以处理各种质量级别的扫描图像,自动增强和预处理图像,以获得最佳 OCR 效果。
格式灵活: 它支持多种输入和输出格式,包括扫描的 PDF 文件、Word 处理程序、Excel 电子表格和纯编辑文本文件。
总之,扫描为可编辑文本的 OCR 技术彻底改变了我们在数字时代处理文档、格式化数据和信息的方式。在线 OCR 等免费在线工具为满足基本需求提供了便捷的起点、 IronOCR 为追求高级功能和最高精确度的用户提供了强大的解决方案。
无论您是普通用户还是希望将 OCR 集成到应用程序中的开发人员,将扫描文本转换为可编辑内容的可能性都会让您的生活更轻松、更高效。
我们的许可选项包括 团队和无限许可证.永久许可证可提供持续支持,30 天退款保证可确保用户满意。
我们还为有需要的用户提供免版税的再分发服务。
PM > Install-Package IronOcr
30天试用密钥 立即。
15天试用密钥 立即。
想要免费将IronOCR部署到实际项目中吗?
您的试用密钥应在电子邮件中。试用表格已提交
成功地.
如果不是,请联系
support@ironsoftware.com
想要免费将IronOCR部署到实际项目中吗?
您的试用密钥应在电子邮件中。试用表格已提交
成功地.
如果不是,请联系
support@ironsoftware.com
想要免费将IronOCR部署到实际项目中吗?
您的试用密钥应在电子邮件中。试用表格已提交
成功地.
如果不是,请联系
support@ironsoftware.com
想要免费将IronOCR部署到实际项目中吗?
您的试用密钥应在电子邮件中。试用表格已提交
成功地.
如果不是,请联系
support@ironsoftware.com
免费开始
无需信用卡
在生产中测试无水印。
随时随地为您服务。
获取30天的完全功能产品。
几分钟内即可启动和运行。
在您的产品试用期间,全面访问我们的支持工程团队。
免费开始
无需信用卡
在生产中测试无水印。
随时随地为您服务。
获取30天的完全功能产品。
几分钟内即可启动和运行。
在您的产品试用期间,全面访问我们的支持工程团队。
谢谢!
您的许可证密钥已发送到所提供的电子邮件。联系我们
专业
$600 美元
$299 美元
5个.NET产品,两件的价格
套件总价值:
$7,192 美元
升级价格
今天
只有
$499 美元
24小时后
$1,098 美元