使用 IronOCR 过滤器指南
IronOCR 提供了您在读取可能需要预处理(以滤镜形式)的图像时所需的工具。 您可以从多种过滤器中选择,以便对您的图像进行处理,使其可被处理。
开始使用IronOCR
立即在您的项目中开始使用IronOCR,并享受免费试用。
OCR 图像过滤器列表
以下图像过滤器可以显著提高性能:
更改图像方向的过滤器
旋转 - 将图像顺时针旋转若干度。要逆时针旋转,请使用负数。
- 矫正 - 旋转图像使其正向上并保持正交。 这对于OCR非常有用,因为Tesseract对扫描倾斜的容忍度可以低至5度。
- 缩放 - 按比例缩放 Ocr 输入页面。
过滤器用于操作图像颜色
二值化 - 这种图像滤镜将每个像素变为黑色或白色,不存在中间色。 可能提高OCR性能,用于文本与背景对比度非常低的情况。
ToGrayScale - 此图像滤镜将每个像素转变为灰度阴影。 不太可能提高OCR精度,但可以提高速度。
- 反转 - 反转每种颜色。 例如,白变黑:黑变白。
- 替换颜色 - 在图像中将一种颜色替换为另一种颜色,并设定一个阈值。
尝试改善图像对比度的滤镜
对比 - 自动增加对比度。 此过滤器通常能提高低对比度扫描中的OCR速度和准确性。
- 膨胀 - 高级形态学。 Dilation 在图像中的对象边界处添加像素。 侵蚀的反义词
- 腐蚀 - 高级形态学。 侵蚀在对象边界上移除像素。 缩小
尝试减少图像噪声的滤镜
锐化 - 锐化模糊的OCR文档,并将透明通道平化为白色。
降噪 - 删除数字噪声。此滤镜只应在预期有噪声的情况下使用。
DeepCleanBackgroundNoise - 重度背景噪声消除。 仅在已知文档背景噪声极端的情况下使用此过滤器,因为此过滤器也可能降低清晰文档的OCR精确度,并且非常耗费CPU。
- EnhanceResolution - 提高低质量图像的分辨率。 此过滤器通常不需要,因为_OcrInput.MinimumDPI_和_OcrInput.TargetDPI_将自动捕捉并解决低分辨率输入。
过滤器示例和用法
在下面的示例中,我们演示了如何在您的代码中应用过滤器。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.cs
using IronOcr;
using System;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("my_image.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
调试过滤器 / 过滤器在做什么?
如果您在程序中读取图像或条形码遇到困难。 您的程序中有一种方法可以保存过滤结果的图像。 通过这种方式,您可以调试并准确地查看每个滤镜的作用以及它是如何操作您的图像的。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.cs
using IronOcr;
using System;
var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();
// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");
// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private file = "skewed_image.tiff"
Private ocr = New IronTesseract()
Private input = New OcrInput()
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames(file, pageindices)
' Here we apply the filter: Deskew
input.Deskew()
' Save the input with filter(s) applied
input.SaveAsImages("my_deskewed")
' We read, then print the text to the console
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
过滤器用例
旋转
过滤器解释
旋转是一种过滤器,用于手动设置图像的已知旋转度,使图像尽可能地直。 IronOCR具有运行Deskew
的功能()但是,这种宽容度非常小,最好用于几乎完全平直的图像。(15度以内). 对于旋转了90度或倒置的输入图像,我们应该调用 Rotate
。()`.
用例代码示例
这是一个调用 Rotate 来纠正倒置图像的示例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.cs
using IronOcr;
using System;
var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Rotate 180 degrees because image is upside-down
input.Rotate(180);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "screenshot.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Rotate 180 degrees because image is upside-down
input.Rotate(180)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
在 "输入.旋转 "之前(180) 在Input.Rotate
之后(180)
Deskew
过滤器解释
使用霍夫变换在一定的容差度内尝试矫正图像。 这对于不完全直立的图像非常重要,因为有时倾斜的文件可能会导致读取错误。
*注意:此方法返回一个布尔值,如果应用了过滤器则为真,如果由于无法检测到图像方向而未能应用则为假。 如果页面没有内容来确定方向,这将会失败。
用例代码示例
这是一个调用Deskew来纠正倾斜图像的示例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.cs
using IronOcr;
using System;
var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
// Read image into variable: result
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
else
{
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}
Imports IronOcr
Imports System
Private image = "paragraph_skewed.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply deskew with 15 degree snap
Dim didDeskew As Boolean = input.Deskew(15)
If didDeskew Then
' Read image into variable: result
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Else
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.")
End If
在 "德斯克 "之前() 在“Deskew”之后()**
规模
过滤器解释
缩放是一种有用的图像处理滤镜,可帮助使用现有的像素调整图像大小。 当条形码因图像仅有几十个像素宽,每个条带为一个像素,或者文字太小且没有抗锯齿处理时,可以使用此方法。
注意:条形码的理想大小为 1000px x 1000px
,在此尺寸下条形码能被良好识别,如果您的条形码未被找到,应考虑此尺寸。
用例代码示例
这是一个调用Scale来放大条形码中条间距以便扫描的示例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.cs
using IronOcr;
using System;
var image = @"small_barcode.png";
var ocr = new IronTesseract();
// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply scale
input.Scale(400); // 400% is 4 times larger
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "small_barcode.png"
Private ocr = New IronTesseract()
' Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = True
Dim input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply scale
input.Scale(400) ' 400% is 4 times larger
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
在 "刻度 "之前() 在使用 Scale
方法调整 PDF 文档大小后,您可以利用 IronPDF 的功能来进一步处理文档。这包括添加水印、合并多个 PDF 文件以及保护 PDF 文件不被未经授权的访问。()**
二值化
过滤器解释
二值化过滤器根据一个自适应算法将图像中的所有像素分类为黑色或白色,该算法会评估图像并对其认为是背景的颜色进行分类。 当您有一张含有多种颜色但文字仍然能够突出显示的图像时,二值化过滤器会去除所有颜色,并将背景分割成平坦的白色,任何被识别为文字的部分将被着色为纯黑色,以便于阅读。
用例代码示例
这是一个调用Binarize来对齐彩色文本、去除背景颜色和噪声的示例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.cs
using IronOcr;
using System;
var image = @"no-binarize.jpg";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Binarize
input.Binarize();
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "no-binarize.jpg"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Binarize
input.Binarize()
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
在 "二值化 "之前()` 在使用Binarize
功能处理图像后,IronOCR
的准确性显著提高。()**
反转
过滤器解释
IronOCR在黑字白底的图像上读取效果最佳。 在应用一系列过滤器之前,重要的是尝试先达到这个结果。 Invert是一个简单的滤镜,它可以反转图像上的所有颜色。 白变黑,黑变白,中间的一切都翻转了。
用例代码示例
这是调用 Invert 将黑底白字转变为白底黑字的示例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.cs
using IronOcr;
using System;
var image = @"before-invert.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Invert
input.Invert(true);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);
Imports IronOcr
Imports System
Private image = "before-invert.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Invert
input.Invert(True)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)
之前 之后