如何在 C# 中使用计算机视觉查找文本#
IronOCR 使用 OpenCV 计算机视觉技术在 OCR 处理之前自动检测图像中的文本区域。 通过将 Tesseract 识别功能仅集中在已识别的文本区域,提高了对嘈杂、多区域或扭曲文本的准确性,与处理整幅图像相比,提取效果显著增强。
快速开始:检测并OCR主要文本区域此示例展示了即时文本提取:加载图像,使用 IronOCR 的计算机视觉自动检测主要文本区域 FindTextRegion(),然后运行 .Read(...) 在一行中提取文本。
-
1Install IronOCR with NuGet Package Manager
-
2复制并运行这段代码。
using var result = new IronTesseract().Read(new OcrInput().LoadImage("image.png").FindTextRegion());Using result = New IronTesseract().Read(New OcrInput().LoadImage("image.png").FindTextRegion())Using result = New IronTesseract().Read(New OcrInput().LoadImage("image.png").FindTextRegion()) -
3部署到您的生产环境中进行测试
通过免费试用立即在您的项目中开始使用IronOCR
-如何在 C# 中进行车牌 OCR 识别(教程) -如何在 C# 教程中从发票中获取文本 -如何使用 C# 从屏幕截图中提取文本 -如何在 C# 中进行 OCR 字幕识别(教程)
最小工作流程(5 个步骤)
- 下载 C# 库,以便在计算机视觉中使用 OCR。
- 利用
FindTextRegion方法自动检测文本区域 - 检查使用
StampCropRectangleAndSaveAs方法检测到的文本区域。 - 使用计算机视觉,通过
FindMultipleTextRegions方法,基于文本区域将原始图像分割成多个图像。 - 使用
GetTextRegions方法获取检测到文本的裁剪区域列表。
如何通过 NuGet 软件包安装 IronOcr.ComputerVision?
IronOCR 中用于执行计算机视觉的 OpenCV 方法在常规的 IronOCR NuGet 包中可见。 有关详细的安装指导,请参阅我们的 NuGet 安装指南。
为什么 IronOCR 需要单独的计算机视觉软件包?
使用这些方法需要通过 NuGet 安装 IronOcr.ComputerVision 到解决方案。 如果您尚未安装该软件,系统会提示您下载。 计算机视觉功能利用 OpenCV 算法大大提高了文本检测的准确性,这与我们的 牌照识别和 护照扫描功能中使用的技术类似。
我应该安装哪个特定平台的软件包?
- Windows:
IronOcr.ComputerVision.Windows- 参见我们的Windows 设置指南 - Linux:
IronOcr.ComputerVision.Linux- 查看我们的Linux 安装教程 - macOS:
IronOcr.ComputerVision.MacOS- 查看我们的macOS 设置说明 - macOS ARM:
IronOcr.ComputerVision.MacOS.ARM
如何使用软件包管理器控制台进行安装?
using NuGet 程序包管理器安装,或者将以下内容粘贴到程序包管理器控制台中:
这提供了使用 IronOCR 计算机视觉与我们的模型文件所需的程序集。
IronOCR 中提供了哪些计算机视觉方法?
本教程后面还包含代码示例。 以下是目前可用方法的总体概述:
| 方法 | 解释 |
|---|---|
FindTextRegion | 检测包含文本元素的区域,并指示 Tesseract 只在检测到文本的区域内搜索文本。 |
FindMultipleTextRegions | 检测包含文本元素的区域,并根据文本区域将页面分割成单独的图像。 |
GetTextRegions | Scans the image and returns a list of text regions as List<CropRectangle>. |
如何使用 FindTextRegion 检测文本区域?
FindTextRegion 使用计算机视觉检测 OcrInput 对象每个页面上的文本元素区域。 在处理带有零散文本的图像时,或者需要通过只关注包含文本的区域来提高性能时,这种方法尤其有用。
FindTextRegion 的基本用法是什么?
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextImports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextIronOcr 2025.6.x 中目前已弃用,并且不接受自定义参数。如何自定义 FindTextRegion 参数?
使用自定义参数调用此方法可对文本检测进行微调。 这些参数的作用类似于我们的 图像过滤器配置:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextImports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextFindTextRegion 在实践中是什么样的?
在本例中,我使用下图来说明一种需要裁剪包含文本区域的方法,但输入图像的文本位置可能会有所不同。 我使用 FindTextRegion 缩小扫描范围到计算机视觉检测到文本的区域。 这种方法与我们的内容区域和裁剪区域教程中使用的技术类似。 这是一张示例图片:

using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("wh-words-sign.jpg");
// Find the text region using Computer Vision
Rectangle textCropArea = input.GetPages().First().FindTextRegion();
// For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png);
// Looks good, so let us apply this region to hasten the read:
var ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea);
Console.WriteLine(ocrResult.Text);using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("wh-words-sign.jpg");
// Find the text region using Computer Vision
Rectangle textCropArea = input.GetPages().First().FindTextRegion();
// For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png);
// Looks good, so let us apply this region to hasten the read:
var ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea);
Console.WriteLine(ocrResult.Text);Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Linq
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("wh-words-sign.jpg")
' Find the text region using Computer Vision
Dim textCropArea As Rectangle = input.GetPages().First().FindTextRegion()
' For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png)
' Looks good, so let us apply this region to hasten the read:
Dim ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea)
Console.WriteLine(ocrResult.Text)Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Linq
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("wh-words-sign.jpg")
' Find the text region using Computer Vision
Dim textCropArea As Rectangle = input.GetPages().First().FindTextRegion()
' For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png)
' Looks good, so let us apply this region to hasten the read:
Dim ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea)
Console.WriteLine(ocrResult.Text)如何调试和验证文本区域检测?
该代码有两个输出。 首先是 .png 文件,由 StampCropRectangleAndSaveAs 保存,用于调试。 我们的调试高亮文本指南也涵盖了这一技术。 我们可以看到 IronCV(计算机视觉)检测到文本的位置:
检测准确识别文本区域。 第二项输出是文本本身:
IRONSOFTWARE
50,000+
Developers in our active community
10,777,061 19,313
NuGet downloads Support tickets resolved
50%+ 80%+
Engineering Team growth Support Team growth
$25,000+
Raised with #TEAMSEAS to clean our beaches & waterways
如何将 FindMultipleTextRegions 用于多个文本区域?
FindMultipleTextRegions 接收一个 OcrInput 对象的所有页面,并使用计算机视觉检测包含文本元素的区域,然后根据文本区域将输入分割为单独图像。 这对于处理具有多个不同文本区域的文档特别有用,类似于我们的在文档中读取表格功能:
FindMultipleTextRegions 的基本用法是什么?
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextImports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextFindMultipleTextRegions 方法不再支持自定义参数。如何自定义 FindMultipleTextRegions 参数?
使用自定义参数调用此方法,以控制区域的检测和分离方式:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.TextImports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text如何使用 FindMultipleTextRegions 处理单个页面?
FindMultipleTextRegions 的另一个重载方法接收一个 OCR 页并返回一组 OCR 页,分别对应其上的每个文本区域。 这种方法有助于处理复杂的布局,类似于我们的多页 TIFF 处理指南中描述的技术:
using IronOcr;
using System.Collections.Generic;
using System.Linq;
int pageIndex = 0;
using var input = new OcrInput();
input.LoadImage("/path/file.png");
var selectedPage = input.GetPages().ElementAt(pageIndex);
List<OcrInputPage> textRegionsOnPage = selectedPage.FindMultipleTextRegions();using IronOcr;
using System.Collections.Generic;
using System.Linq;
int pageIndex = 0;
using var input = new OcrInput();
input.LoadImage("/path/file.png");
var selectedPage = input.GetPages().ElementAt(pageIndex);
List<OcrInputPage> textRegionsOnPage = selectedPage.FindMultipleTextRegions();Imports IronOcr
Imports System.Collections.Generic
Imports System.Linq
Private pageIndex As Integer = 0
Private input = New OcrInput()
input.LoadImage("/path/file.png")
Dim selectedPage = input.GetPages().ElementAt(pageIndex)
Dim textRegionsOnPage As List(Of OcrInputPage) = selectedPage.FindMultipleTextRegions()Imports IronOcr
Imports System.Collections.Generic
Imports System.Linq
Private pageIndex As Integer = 0
Private input = New OcrInput()
input.LoadImage("/path/file.png")
Dim selectedPage = input.GetPages().ElementAt(pageIndex)
Dim textRegionsOnPage As List(Of OcrInputPage) = selectedPage.FindMultipleTextRegions()如何使用 GetTextRegions 获取文本区域坐标?
GetTextRegions 返回一列表切割区域,其中在页面上检测到文本。 当您需要文本区域的坐标以便进一步处理或实施自定义 OCR 工作流程时,这种方法尤其有用。 有关使用结果的更多详细信息,请参阅我们的 OcrResult 类文档:
何时应使用 GetTextRegions 而不是 FindTextRegion?
/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read("/path/file.png", region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read("/path/file.png", region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
' Create a new IronTesseract object for OCR
Dim ocr = New IronTesseract()
' Load an image into OcrInput
Using input = New OcrInput()
input.LoadImage("/path/file.png")
' Get the first page from the input
Dim firstPage = input.GetPages().First()
' Get all text regions detected on this page
Dim textRegions As List(Of Rectangle) = firstPage.GetTextRegions()
' Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:")
For Each region In textRegions
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}")
Next
' You can also process each region individually
For Each region In textRegions
Dim regionResult = ocr.Read("/path/file.png", region)
Console.WriteLine($"Text in region: {regionResult.Text}")
Next
End UsingImports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
' Create a new IronTesseract object for OCR
Dim ocr = New IronTesseract()
' Load an image into OcrInput
Using input = New OcrInput()
input.LoadImage("/path/file.png")
' Get the first page from the input
Dim firstPage = input.GetPages().First()
' Get all text regions detected on this page
Dim textRegions As List(Of Rectangle) = firstPage.GetTextRegions()
' Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:")
For Each region In textRegions
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}")
Next
' You can also process each region individually
For Each region In textRegions
Dim regionResult = ocr.Read("/path/file.png", region)
Console.WriteLine($"Text in region: {regionResult.Text}")
Next
End Using计算机视觉在 OCR 中的常见用例有哪些?
计算机视觉可在具有挑战性的场景中大大提高 OCR 的准确性。 以下是实际应用:
1.文档布局分析:自动识别和处理复杂文档的不同部分。 尤其适用于 扫描文件。 2.多栏文本:为报纸或杂志分栏并独立阅读。 使用多线程处理以获得更快的结果。 3.混合内容:区分文档中的文本区域和图形。 在处理内嵌文本的照片时有帮助。 4.性能优化:只对包含文本的区域进行 OCR 处理。 请参阅我们的快速 OCR 配置指南。 5.质量控制:在完全 OCR 处理之前验证文本检测。 我们的进度跟踪功能可监控每个阶段。
通过正确的设置和输入文件,OCR 可以实现接近人类的阅读能力。 为获得最佳效果,请将计算机视觉与我们的图像优化过滤器相结合,以实现最佳的 OCR 准确性。 在处理低质量图像时,我们的修复低质量扫描指南提供了宝贵的预处理技术。
高级计算机视觉技术
对于希望提高 OCR 精确度的开发人员来说,可以考虑这些先进的方法:
- 定制培训:使用我们的定制语言文件指南为专用字体培训 OCR 引擎。
- 多语言支持:使用我们的多语言功能处理多语言文档
- 条形码集成:使用我们的具有条形码阅读功能的OCR,将文本识别与条形码阅读结合起来
常见问题解答
什么是 OCR 中的计算机视觉?
IronOCR 中的计算机视觉使用 OpenCV 算法在 OCR 处理之前自动检测图像中的文本区域。这样,Tesseract 只对识别出的文本区域进行识别,而不是处理整个图像,从而大大提高了噪声、多区域或扭曲文本的准确性。
如何在 C# 中快速实现计算机视觉 OCR?
IronOCR 只需一行代码即可实现计算机视觉 OCR:使用 IronTesseract 的 FindTextRegion() 方法自动检测主要文本区域,然后运行 .Read() 立即提取文本。
为什么需要安装单独的计算机视觉软件包?
IronOCR 需要单独的 IronOcr.ComputerVision NuGet 包,因为计算机视觉功能利用了 OpenCV 算法。这些算法大大提高了文本检测的准确性,对于车牌识别和护照扫描等功能至关重要。
我应该安装哪个特定平台的计算机视觉软件包?
IronOCR 提供特定平台的软件包:适用于 Windows 系统的 IronOcr.ComputerVision.Windows、适用于 Linux 发行版的 IronOcr.ComputerVision.Linux,以及适用于 macOS 环境的 IronOcr.ComputerVision.MacOS。
如何检测图像中的多个文本区域?
IronOCR 提供了 FindMultipleTextRegions 方法,可根据检测到的文本区域将原始图像分离成多个图像。您还可以使用 GetTextRegions 方法检索检测到文本的裁剪区域列表。
我能否在处理前验证已检测到哪些文本区域?
是的,IronOCR 包含 StampCropRectangleAndSaveAs 方法,允许您在运行实际 OCR 流程之前检查计算机视觉算法检测到了哪些文本区域。
What is the use of the GetTextRegions method in IronOCR?
The GetTextRegions method in IronOCR provides a list of detected text regions as coordinates, useful for further processing or implementing custom OCR workflows.
How can IronOCR assist in processing documents with multiple text areas?
IronOCR uses the FindMultipleTextRegions method to detect and process documents with multiple distinct text areas by automatically separating them into individual sections for better OCR performance.
Why might IronOCR require a separate Computer Vision package?
The separate Computer Vision package for IronOCR, available via NuGet, is necessary to utilize advanced text detection features powered by OpenCV algorithms, enhancing OCR accuracy beyond standard capabilities.
What common uses does computer vision in IronOCR support?
Computer vision in IronOCR can be used for document layout analysis, multi-column text recognition, distinguishing mixed content, performance optimizations, and quality control in OCR processes.
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。