在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
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);
}
Imports IronOcr
Imports System
Private ocrTesseract = New IronTesseract()
ocrTesseract.Language = OcrLanguage.Arabic
Using ocrInput As New OcrInput()
ocrInput.LoadImage("images\arabic.gif")
Dim ocrResult = ocrTesseract.Read(ocrInput)
Console.WriteLine(ocrResult.Text)
End Using
' Example with a Custom Trained Font Being used:
Dim ocrTesseractCustomerLang = New IronTesseract()
ocrTesseractCustomerLang.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata")
ocrTesseractCustomerLang.AddSecondaryLanguage(OcrLanguage.EnglishBest)
Using ocrInput As New OcrInput()
ocrInput.LoadPdf("images\mixed-lang.pdf")
Dim ocrResult = ocrTesseractCustomerLang.Read(ocrInput)
Console.WriteLine(ocrResult.Text)
End Using
<p>IronOCR支持125种国际语言。</p> <p>除了默认安装的英语外,还可以通过NuGet添加语言包到您的.NET项目中,或者从我们的网站下载。<a href="/csharp/ocr/languages/" target="_blank" rel="nofollow noopener noreferrer">语言页面</a>.</p> <p>大多数语言都有快速和标准版本可用。(推荐)和最佳质量。 最好可能更准确,但也更慢。</p>
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);
double PageWidth = page.Width;
double 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;
}
}
}
}
}
Imports IronOcr
Imports 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/
Private ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
Dim ocrInput As New OcrInput()
Dim pages = New Integer() { 1, 2 }
ocrInput.LoadImageFrames("example.tiff", pages)
Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
For Each page In ocrResult.Pages
' Page object
Dim PageNumber As Integer = page.PageNumber
Dim PageText As String = page.Text
Dim PageWordCount As Integer = page.WordCount
' null if we dont set Ocr.Configuration.ReadBarCodes = true;
Dim Barcodes() As OcrResult.Barcode = page.Barcodes
Dim PageImage As AnyBitmap = page.ToBitmap(ocrInput)
Dim PageWidth As Double = page.Width
Dim PageHeight As Double = page.Height
Dim PageRotation As Double = page.Rotation ' angular correction in degrees from OcrInput.Deskew()
For Each paragraph In page.Paragraphs
' Pages -> Paragraphs
Dim ParagraphNumber As Integer = paragraph.ParagraphNumber
Dim ParagraphText As String = paragraph.Text
Dim ParagraphImage As AnyBitmap = paragraph.ToBitmap(ocrInput)
Dim ParagraphX_location As Integer = paragraph.X
Dim ParagraphY_location As Integer = paragraph.Y
Dim ParagraphWidth As Integer = paragraph.Width
Dim ParagraphHeight As Integer = paragraph.Height
Dim ParagraphOcrAccuracy As Double = paragraph.Confidence
Dim paragrapthText_direction As OcrResult.TextFlow = paragraph.TextDirection
For Each line In paragraph.Lines
' Pages -> Paragraphs -> Lines
Dim LineNumber As Integer = line.LineNumber
Dim LineText As String = line.Text
Dim LineImage As AnyBitmap = line.ToBitmap(ocrInput)
Dim LineX_location As Integer = line.X
Dim LineY_location As Integer = line.Y
Dim LineWidth As Integer = line.Width
Dim LineHeight As Integer = line.Height
Dim LineOcrAccuracy As Double = line.Confidence
Dim LineSkew As Double = line.BaselineAngle
Dim LineOffset As Double = line.BaselineOffset
For Each word In line.Words
' Pages -> Paragraphs -> Lines -> Words
Dim WordNumber As Integer = word.WordNumber
Dim WordText As String = word.Text
Dim WordImage As AnyBitmap = word.ToBitmap(ocrInput)
Dim WordX_location As Integer = word.X
Dim WordY_location As Integer = word.Y
Dim WordWidth As Integer = word.Width
Dim WordHeight As Integer = word.Height
Dim WordOcrAccuracy As Double = word.Confidence
For Each character In word.Characters
' Pages -> Paragraphs -> Lines -> Words -> Characters
Dim CharacterNumber As Integer = character.CharacterNumber
Dim CharacterText As String = character.Text
Dim CharacterImage As AnyBitmap = character.ToBitmap(ocrInput)
Dim CharacterX_location As Integer = character.X
Dim CharacterY_location As Integer = character.Y
Dim CharacterWidth As Integer = character.Width
Dim CharacterHeight As Integer = character.Height
Dim CharacterOcrAccuracy As Double = character.Confidence
' Output alternative symbols choices and their probability.
' Very useful for spellchecking
Dim Choices() As OcrResult.Choice = character.Choices
Next character
Next word
Next line
Next paragraph
Next page
<p>IronOCR使用Tesseract 5为它扫描的每个页面返回一个高级结果对象。 此包括每个项目的<strong>位置数据、图像、文本、统计置信度、备选符号选择、字体名称、字体大小、字体装饰、字体粗细和位置</strong>。</p> <ul> <li>页次</li> <li>段落</li> <li>文本行</li> <li>字词</li> <li>单个字符</li> <li>和条形码</li> </ul>
无论是护照页面、发票、银行对账单、邮件、名片还是收据;光学字符识别(OCR)是一个基于模式识别、计算机视觉和机器学习的研究领域。企业跨部门利用OCR提取文本,用于会计和财务系统、业务数字化、企业内容管理和数据报告系统。
除了构建其他方面 成功案例IronOCR通过IronOCR——一个原生C# OCR库,为Google Tesseract和Microsoft 2021 Azure Cognitive Services增值。
如果您希望将现实世界的图片以99%的准确率进行转换,那么请继续阅读,了解IronOCR如何让您构建一个高效、准确、可扩展且几乎媲美人类的光学字符识别应用程序。
光学字符识别 (OCR) 被认为是一个已解决的现象,因为不同的 API 声称对保护有巨大的信心。然而,各种产品通常僵硬且不准确,在现实世界应用中失败。同样,Tesseract OCR 适用于机器打印的高分辨率完美文本。
听起来不错?
只有在现实世界中,文本不总是完美打印或手写,并且具有高分辨率。相反,IronOCR 可以处理旋转、倾斜、低 DPI、背景噪音等所有数字不完美的问题,包括从图像文件中提取手写文本。我们确保提供 99.8 - 100% 准确的、可搜索的文档,并支持包括 Windows、Linux、macOS、Microsoft Azure、AWS 和 Docker 在内的跨平台支持——这就是 C# 开发人员选择的原因 IronOCR 超越(基本)Tesseract OCR——这都是为了增加价值。
让自己装备最好的!
除此之外,IronOCR 还能够让您快速处理图像文档。除此之外,IronOCR API 还包括以下功能:
从本地 .dll 或 exes 安装过渡到单一的事实来源 - 使用简单的 C# API 开发单一的本地 .NET 组件库,支持:
IronOCR API的艺术并未止步于此;您可以继续探索我们的技术优势 功能 此外。我们通过开发可靠的解决方案来简化文档处理应用程序,并通过提供行业领先的嵌入功能来最大化业务收入,从而一步步减少业务复杂性。
我们的光学字符识别过程从自动图像预处理开始,以增强图像文件,从而提高提取响应速度。IronOCR 为您的工作增添价值,因为它使用户能够将示例基础图像文件提取为其最佳版本。IronOCR 涵盖了所有方面:
由于IronOCR服务在300 DPI(每英寸点数)的图像文件上运行最佳,任何显著超出200-300 DPI范围的图像都会重新采样以适应目标范围。
这可以将600 DPI图像降采样到300 DPI或将100 DPI图像上采样到200 DPI,置信度为99%。
由于IronOCR认知服务旨在处理单色图像,因此所有彩色或灰度图像都会通过自适应二值化算法转换为单色图像。
该算法比较区域内的像素密度,以确定阈值用于将像素转为单色。
IronOCR 会寻找文本行和字符模式,以自动校正并旋转输入的图像资源到所需的方向。
使用IronOCR,图像文件将自动分析噪音的存在情况和数量。噪音基本上是扫描图像上的“小斑点”。我们的自适应算法会根据噪音颗粒的大小来去除噪音。
一旦样本图像文件预处理完成,IronOCR 然后将输入的图像文件分成不同的处理区。
另一个预处理阶段涉及将参考图像分解为不同的逻辑区域。IronOCR首先利用空白和模式定位图像中的文本和图片,文本区域与图片分离。
然后将其分区为区域——段落、列和文本块。图像和剩余的非文本像素被识别为在文本识别期间省略并包含在智能输出中。然后,IronOCR 使用网格线和文本块将文本区域标记为表格。
执行多个相互关联的步骤,将像素斑点转换为用户可以搜索的单行文本。这包括字符分割、自适应分类、词典引用和其他相关过程,以提取最佳文本。
使用IronOCR API服务,我们已通过多种语言的多个数据文件示例测试了我们的工具,这些示例包括单词级别、符号准确性和Microsoft Office格式的布局保留。尽管某些参数会自动测试,其他参数则需要进行视觉检查。
IronOCR让您可以通过多种输入格式添加OCR跨平台功能到可以搜索的纯文本字符串。为了借助IronOCR提升您的生产力,请通过我们的免费版本开始使用。 教程 文档指导您使用IronOCR。今天下载我们的NuGet包安装程序,使用免费试用密钥进行探索,或联系24/7个人支持。通过我们的终身许可证来扩大您的需求。 授权,无论您的团队规模多大。
查看许可C# Tesseract 光学字符识别
C# 光学字符识别 ASP.NET
Iron的团队在.NET软件组件市场拥有超过10年的经验。