跳過到頁腳內容
使用 IRONOCR

電腦視覺如何提升OCR文字辨識準確率

從影像中萃取文字聽起來很簡單,除非文件歪斜、褪色或在光線不足的情況下拍攝。 這就是電腦視覺將光學字元識別從脆弱的程序轉變為可靠程序的地方。 透過在資料擷取之前應用智慧型影像分析,OCR 系統可以在掃描的文件上達到接近人類等級的辨識準確度,否則會產生亂碼的結果。

具備電腦視覺的 OCR 已經成為數位轉型計畫的基礎技術,可消除不同文件類型的手動資料輸入。本指南將探討如何整合這些技術,以大幅改善 .NET 應用程式中的文字識別能力。 從用於校正低品質掃描的預處理過濾器到驅動現代 OCR 引擎的神經網路架構,請理解這些概念使您能夠建立能夠優雅地處理現實世界輸入影像的文件處理系統。

若要跟隨下面的程式碼範例進行操作,請透過 NuGet 安裝 IronOCR:

dotnet add package IronOcr
dotnet add package IronOcr
SHELL

或使用 NuGet 套件管理器控制台:

Install-Package IronOcr
Install-Package IronOcr
SHELL

安裝前,請造訪IronOCR NuGet 套件頁面以確認最新版本。

電腦視覺與 OCR 的關係為何?

電腦視覺包含教導機器詮釋視覺資訊的廣泛領域,而OCR則特別著重於將圖像檔中的印刷或手寫文字轉換為機器編碼的文字。 光學字元辨識是電腦視覺領域的一個專門應用,它利用了許多與影像分析和模式識別相同的底層技術。

現代的 OCR 流水線包含三個相互關聯的階段。 文字偵測可辨識掃描影像中包含個別文字的文字區域,並將這些區域與背景、圖形和其他視覺元素隔離。 影像預處理後會增強這些偵測到的區域,修正扭曲並改善對比度,使字元影像更易分辨。 最後,字元識別應用模式匹配和神經網路推論,將每個儲存字形的視覺表示轉換成對應的數位文字。

傳統的 OCR 技術在這些階段中的任何階段遇到不完美的輸入時,都會陷入困境。 稍微旋轉的掃描可能會產生完全無意義的結果,而低解析度的輸入影像或帶有背景圖案的印刷文件則經常完全失敗。 電腦視覺技術透過使每個流程階段更具適應性和彈性來克服這些限制,從而能夠成功識別商業文件、銀行對帳單,甚至是手寫筆記。

在 .NET 專案中查看 OCR 功能的最快方法是執行一次基本識別測試:

using IronOcr;

// Initialize the optical character reader
var ocr = new IronTesseract();

// Load scanned document or image file
using var input = new OcrInput();
input.LoadImage("document.png");

// Perform text recognition and data extraction
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Initialize the optical character reader
var ocr = new IronTesseract();

// Load scanned document or image file
using var input = new OcrInput();
input.LoadImage("document.png");

// Perform text recognition and data extraction
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

' Initialize the optical character reader
Dim ocr As New IronTesseract()

' Load scanned document or image file
Using input As New OcrInput()
    input.LoadImage("document.png")

    ' Perform text recognition and data extraction
    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

上面的程式碼示範了使用IronOCR 的最簡單的OCR 工作流程IronTesseract 類別提供了 Tesseract 5 引擎的託管包裝器,而 OcrInput 處理映像檔載入和格式轉換。 對於乾淨、格式良好的文字文件,這種基本的光學字元辨識方法通常就足夠了。 然而,現實世界中的掃描文檔很少是以原始狀態送達,因此預先處理對於準確地擷取文字變得非常重要。

輸入

使用 IronOCR 的電腦視覺 OCR 如何提高文字識別的精確度:圖像 1 - 樣本輸入圖像

輸出

使用 IronOCR 的電腦視覺 OCR 如何提升文字辨識的精確度:圖像 2 - 控制台輸出

影像預處理如何改善文字辨識?

影像預處理應用電腦視覺操作來提高輸入影像的質量,然後再由 OCR 引擎進行分析。 這些轉換解決了 OCR 失敗的最常見原因:旋轉、雜訊、對比度低和解析度不足。 每種預處理技術都針對特定的影像瑕疵,將這些技術策略性地結合起來,就能拯救原本無法閱讀的印刷文件和掃描影像。

傾斜校正可以修正以一定角度掃描文件時發生的旋轉錯位。 由於光學字元識別軟體希望文字行水平排列,因此即使是輕微的旋轉也會對 OCR 準確性造成重大影響。 Deskew 作業會分析文字的行角度,並套用糾正旋轉來對齊內容。

降噪功能可以去除數位偽影、斑點和掃描器引入的失真,這些都可能被誤解為單一字元。 背景圖案、灰塵痕跡和壓縮假象都會產生雜訊,干擾原始影像中準確的字元分割。

二值化將影像轉換為純黑白影像,消除色彩資訊和灰階漸層。 這種簡化有助於識別引擎更明確區分印刷文字與背景,尤其是在使用彩色紙張或褪色印刷的文件中,識別字母變得非常困難。

解析度增強可以提高低品質掃描件或照片的像素密度。更高的解析度能為OCR軟體提供更多細節,使其能夠分析更多細節,從而提高區分相似字元的能力,即使在輸入品質較差的情況下也能成功識別。

using IronOcr;

var ocr = new IronTesseract();

// Load poor quality scan for document processing
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply preprocessing filters for improved accuracy
input.Deskew();                   // Correct rotational skew in scanned image
input.DeNoise();                  // Remove digital artifacts from input
input.Binarize();                 // Convert to black and white for text extraction
input.EnhanceResolution(300);     // Boost to 300 DPI for single character clarity

OcrResult result = ocr.Read(input);
Console.WriteLine($"Extracted: {result.Text}");
using IronOcr;

var ocr = new IronTesseract();

// Load poor quality scan for document processing
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply preprocessing filters for improved accuracy
input.Deskew();                   // Correct rotational skew in scanned image
input.DeNoise();                  // Remove digital artifacts from input
input.Binarize();                 // Convert to black and white for text extraction
input.EnhanceResolution(300);     // Boost to 300 DPI for single character clarity

OcrResult result = ocr.Read(input);
Console.WriteLine($"Extracted: {result.Text}");
Imports IronOcr

Dim ocr As New IronTesseract()

' Load poor quality scan for document processing
Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")

    ' Apply preprocessing filters for improved accuracy
    input.Deskew()                   ' Correct rotational skew in scanned image
    input.DeNoise()                  ' Remove digital artifacts from input
    input.Binarize()                 ' Convert to black and white for text extraction
    input.EnhanceResolution(300)     ' Boost to 300 DPI for single character clarity

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine($"Extracted: {result.Text}")
End Using
$vbLabelText   $csharpLabel

此範例在執行 OCR 之前串聯多個預處理過濾器Deskew() 方法分析文件並套用旋轉校正,而 DeNoise() 方法可去除文字影像中的斑點和偽影。 Binarize() 呼叫將掃描的圖像轉換為純黑白圖像,以便更清晰地提取文本;而 EnhanceResolution() 呼叫將圖像的分辨率提升至 300 DPI,這是準確識別字符的推薦最低分辨率。

過濾器的應用順序很重要。 由於後續濾鏡在正確對齊的影像上效果較佳,因此通常應在影像鏈的早期進行抗色偏處理。 二值化之前的雜訊降低有助於防止人工影像被永久編碼到黑白轉換中。 針對特定文件類型嘗試不同的過濾器組合,通常可以揭示給定用例的最佳順序,無論 OCR 應用程式處理的是發票、收據、病人記錄還是掃描的合約。

如何選擇合適的預處理濾波器組合?

選擇合適的篩選條件組合取決於輸入文件的性質。 相機拍攝的具有透視畸變的影像,先進行傾斜校正,然後再進行降噪處理,效果會更好。 傳真或影印的文件通常需要進行強力二值化處理,以消除字元周圍的灰色光暈。 低解析度掃描需要先進行解析度增強,然後再進行其他任何濾波處理,因為在降噪之前進行放大可以避免放大壓縮偽影。

一個切實可行的方法是將文件來源分類——掃描器、相機、傳真、PDF 柵格化——並為每種來源應用客製化的過濾器鏈。 IronOCR 支援在單一 OcrInput 過程中連結任意數量的過濾器,因此您可以在配置中定義每個來源的配置文件,並在運行時應用它們,而無需重寫識別邏輯。

哪些深度學習模型為現代 OCR 提供動力?

現代 OCR 引擎依賴深度學習架構,這徹底改變了文字辨識的準確性。 傳統的方法是將字元與預先定義的範本進行比對,與此不同的是,以神經網路為基礎的 OCR 模型會從龐大的訓練資料集中學習辨識文字模式,使其能夠更有效地處理字型變異、手寫風格和劣化影像。 這種機器學習方法為當今功能最強大的 OCR 解決方案提供了動力。

識別流程通常結合兩種神經網路類型。卷積神經網路(CNN)擅長從影像中提取特徵。 這些網路透過多層處理輸入影像,逐步識別越來越複雜的模式——從基本的邊緣和曲線到完整的字元形狀。卷積神經網路(CNN)產生特徵圖,對文字區域的視覺特徵進行編碼,從而能夠更準確地處理印刷文字和手寫文字。

長短期記憶體 (LSTM) 網路會以序列的方式處理這些特徵,並辨識出數位文字是以特定的順序流動。 LSTM 可保持對先前輸入的記憶,使其能夠理解上下文並處理書面語言的連續性質。 這種組合——通常被稱為CRNN (卷積循環神經網路)——構成了現代 OCR 準確性的支柱,並實現了跨多種語言的智慧字元辨識。

IronOCR 所使用的Tesseract 5 引擎實現了這種基於 LSTM 的架構,與先前完全依賴傳統模式識別的版本相比,這是一個重大進步。 神經網路方法可處理特定字型、部分遮蔽以及影像劣化等問題,這些問題都會擊敗以模板為基礎的 OCR 系統。

using IronOcr;

var ocr = new IronTesseract();

// Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English;  // IronOCR supports 125+ languages

// Process PDF with mixed handwriting styles and printed text
using var input = new OcrInput("web-report.pdf");
input.Deskew();

OcrResult result = ocr.Read(input);

// Access detailed recognition data including text regions
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}
using IronOcr;

var ocr = new IronTesseract();

// Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English;  // IronOCR supports 125+ languages

// Process PDF with mixed handwriting styles and printed text
using var input = new OcrInput("web-report.pdf");
input.Deskew();

OcrResult result = ocr.Read(input);

// Access detailed recognition data including text regions
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}
Imports IronOcr

Dim ocr As New IronTesseract()

' Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English  ' IronOCR supports 125+ languages

' Process PDF with mixed handwriting styles and printed text
Using input As New OcrInput("web-report.pdf")
    input.Deskew()

    Dim result As OcrResult = ocr.Read(input)

    ' Access detailed recognition data including text regions
    For Each page In result.Pages
        Console.WriteLine($"Page {page.PageNumber}: {page.Text}")
    Next
End Using
$vbLabelText   $csharpLabel

IronTesseract 類別透過簡潔的 .NET 介面提供 Tesseract 5 神經網路功能的存取。 傳回的OcrResult物件不僅包含提取的文本,還包含結構化數據,包括頁面、段落、行和單字及其置信度分數和邊界座標。

輸入

使用 IronOCR 的電腦視覺 OCR 如何提升文字辨識的精確度:圖像 3 - PDF 輸入範例

輸出

使用 IronOCR 的電腦視覺 OCR 如何提升文字辨識的精確度:圖像 4 - OCR 輸出

這種結構化的輸出證明對於簡單的文字擷取以外的應用非常有價值。 文檔處理系統可以利用單字位置來理解複雜的佈局,而品質保證工作流程可以標記置信度低的區域以供人工審核。 神經網路架構透過在識別文字旁提供豐富的元資料,讓所有這一切成為可能,讓以 AI 為基礎的 OCR 解決方案能夠有效率地處理大量非結構化資料。

IronOCR如何處理多語言文件?

IronOCR 支援超過 125 種語言,每種語言都由專門的 Tesseract LSTM 語言模型提供支援。 在呼叫 Read 之前,您可以透過在 IronTesseract 上設定 Language 屬性來選擇語言。 對於混合兩種語言的文檔——例如,德語合約和英語腳註——您可以同時指定多種語言,引擎會根據每個文字區域應用最合適的模型。

語言包以 NuGet 套件的形式分發,因此您只需下載應用程式所需的模型。 這樣既能確保單一語言導向的應用程式部署規模可控,又能在需要時提供完整的多語言支援。

如何為表單和表格啟用基於區域的 OCR?

基於區域的 OCR 將識別範圍限制在影像的特定區域,這在文件包含特定感興趣區域(例如表單欄位、發票行項目或表格單元格)時非常有用。 這種有針對性的方法將計算資源集中在相關內容上,從而提高了速度和準確性。

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("invoice.jpg");

// Define a crop region for the total amount field (x, y, width, height in pixels)
var totalRegion = new CropRectangle(x: 600, y: 800, width: 300, height: 50);
input.AddRegion(totalRegion);

OcrResult result = ocr.Read(input);
Console.WriteLine($"Invoice total: {result.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("invoice.jpg");

// Define a crop region for the total amount field (x, y, width, height in pixels)
var totalRegion = new CropRectangle(x: 600, y: 800, width: 300, height: 50);
input.AddRegion(totalRegion);

OcrResult result = ocr.Read(input);
Console.WriteLine($"Invoice total: {result.Text}");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocr As New IronTesseract()

Using input As New OcrInput()
    input.LoadImage("invoice.jpg")

    ' Define a crop region for the total amount field (x, y, width, height in pixels)
    Dim totalRegion As New CropRectangle(x:=600, y:=800, width:=300, height:=50)
    input.AddRegion(totalRegion)

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine($"Invoice total: {result.Text}")
End Using
$vbLabelText   $csharpLabel

將基於區域的 OCR 與置信度閾值結合,可以對資料品質進行精細控制。 對於財務文件和法律資料,將置信度低於 85% 的字詞標記出來進行二次審核是一個實用的基準。您可以根據每個來源的掃描質量,針對每種文件類型調整閾值。

有關基於區域的 OCR 和裁剪矩形的更多信息,請參閱 IronOCR 文件。

開發者如何透過程式設計方式優化 OCR 準確率?

除了套用標準預處理過濾器之外,您還可以針對特定文件類型和品質要求微調 OCR 的效能。 置信度評分、自動過濾器優化和可搜尋 PDF 生成等功能,有助於最大限度地提高生產應用中的識別準確率,這些應用必須能夠可靠地識別各種文件類型中的文字。

置信度分數表示引擎對每個已識別元素的確定程度。 分析這些分數有助於找出可能需要手動驗證或替代處理方法的問題區域。 應用程式可以設定置信度閾值,低於該閾值的結果將被標記出來進行審核——這對於需要高精度的敏感文件至關重要。

using IronOcr;

var ocr = new IronTesseract();

// Load business document for OCR processing
using var input = new OcrInput("receipt.jpg");

// Let the system determine optimal preprocessing for OCR accuracy
string suggestedCode = OcrInputFilterWizard.Run(
    "receipt.jpg",
    out double confidence,
    ocr);

Console.WriteLine($"Achieved confidence: {confidence:P1}");
Console.WriteLine($"Optimal filter chain: {suggestedCode}");

// Apply recommended filters for successful recognition
input.DeNoise();
input.Deskew();

OcrResult result = ocr.Read(input);

// Analyze word-level confidence for extracted text
foreach (var word in result.Words)
{
    if (word.Confidence < 0.85)
    {
        Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})");
    }
}
using IronOcr;

var ocr = new IronTesseract();

// Load business document for OCR processing
using var input = new OcrInput("receipt.jpg");

// Let the system determine optimal preprocessing for OCR accuracy
string suggestedCode = OcrInputFilterWizard.Run(
    "receipt.jpg",
    out double confidence,
    ocr);

Console.WriteLine($"Achieved confidence: {confidence:P1}");
Console.WriteLine($"Optimal filter chain: {suggestedCode}");

// Apply recommended filters for successful recognition
input.DeNoise();
input.Deskew();

OcrResult result = ocr.Read(input);

// Analyze word-level confidence for extracted text
foreach (var word in result.Words)
{
    if (word.Confidence < 0.85)
    {
        Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})");
    }
}
Imports IronOcr

Dim ocr As New IronTesseract()

' Load business document for OCR processing
Using input As New OcrInput("receipt.jpg")

    ' Let the system determine optimal preprocessing for OCR accuracy
    Dim confidence As Double
    Dim suggestedCode As String = OcrInputFilterWizard.Run("receipt.jpg", confidence, ocr)

    Console.WriteLine($"Achieved confidence: {confidence:P1}")
    Console.WriteLine($"Optimal filter chain: {suggestedCode}")

    ' Apply recommended filters for successful recognition
    input.DeNoise()
    input.Deskew()

    Dim result As OcrResult = ocr.Read(input)

    ' Analyze word-level confidence for extracted text
    For Each word In result.Words
        If word.Confidence < 0.85 Then
            Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})")
        End If
    Next
End Using
$vbLabelText   $csharpLabel

OcrInputFilterWizard分析影像並測試各種濾波器組合,以確定哪個預處理鏈產生置信度最高的結果。 這種自動化方法消除了處理不熟悉的文件類型時的猜測。此精靈會傳回達到的置信度等級以及重現最佳配置所需的程式碼,從而簡化業務流程的 OCR 應用程式開發。

迴圈中展示的字詞層級信賴度分析可提供細緻的品質評估。 處理財務文件、病患記錄或法律資料的應用程式通常需要這種程度的審查,以確保擷取的資料符合精確度標準。 低於可信度臨界值的字詞會觸發二次驗證程序或其他識別嘗試,以支援要求可靠性的資料管理工作流程。

如何從掃描文件產生可搜尋的PDF?

對於需要轉換為可搜尋存檔的文檔,IronOCR 可以產生可搜尋的 PDF ,將識別出的文字層嵌入到原始圖像下方,從而實現全文搜索,同時保持視覺保真度。 此功能可將掃描文件轉換為適合長期存檔、法律取證工作流程或企業內容管理系統的數位格式。

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput("scanned-contract.pdf");
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

// Export as searchable PDF with embedded text layer
result.SaveAsSearchablePdf("searchable-contract.pdf");
Console.WriteLine("Searchable PDF saved successfully.");
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput("scanned-contract.pdf");
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

// Export as searchable PDF with embedded text layer
result.SaveAsSearchablePdf("searchable-contract.pdf");
Console.WriteLine("Searchable PDF saved successfully.");
Imports IronOcr

Dim ocr As New IronTesseract()

Using input As New OcrInput("scanned-contract.pdf")
    input.Deskew()
    input.DeNoise()

    Dim result As OcrResult = ocr.Read(input)

    ' Export as searchable PDF with embedded text layer
    result.SaveAsSearchablePdf("searchable-contract.pdf")
    Console.WriteLine("Searchable PDF saved successfully.")
End Using
$vbLabelText   $csharpLabel

生成的文件保留了原始掃描件的視覺外觀,同時添加了一個隱藏的文字層,搜尋工具和螢幕閱讀器可以存取該文字層。 這是針對符合合規性或可訪問性要求的文件數位化項目的標準輸出格式。

如何比較不同文件類型的 OCR 效能?

不同的文件類別——列印表格、手寫筆記、低品質傳真傳輸和高解析度相機拍攝的圖像——對預處理和識別設定的反應各不相同。 透過對每個類別中的代表性樣本進行基準測試,可以發現準確度差距所在以及需要調整哪些過濾器。

按文檔類型劃分的 OCR 預處理建議
文件類型 推薦篩選條件 典型精度提升 主要挑戰
平板掃描文字 去斜,二值化 5-15% 輕微旋轉,陰影邊緣
相機拍攝的文件 去斜、降噪、增強分辨率 20-40% 透視變形、噪音
傳真/影印 二值化、去噪 15-30% 半色調圖案,對比度降低
Low-resolution scan (<150 DPI) 增強解析度(300),桌面 30-50% 像素密度不足
手寫筆記 二值化、去噪 10-25% 可變筆畫寬度,樣式變化

這些準確率的提高是基於學術 OCR 基準研究的預處理效果研究的方向性估計。 實際結果因掃描設備、文件年代和內容複雜程度而異。 使用 OcrInputFilterWizard 對您自己的樣本集運行,即可獲得特定於您的管道的經驗數據。

瀏覽IronOCR 預處理過濾器的完整列表,以了解在調整管道時可用的所有選項。

IronOCR在生產文件處理方面的主要功能有哪些?

在生產環境中部署 OCR 時,除了基本的識別功能外,IronOCR 的幾項功能對於可靠性和吞吐量來說都非常重要。 了解這些特性有助於您設計出可擴展且不犧牲準確性的流程。

支援多種格式輸入-IronOCR 透過單一的統一 API 接受影像(PNG、JPEG、TIFF、BMP、GIF、WEBP)、PDF 檔案和多頁 TIFF 檔案。 這表示您可以處理來自掃描站、電子郵件附件或文件管理系統的任何格式,而無需編寫特定於格式的程式碼路徑。

執行緒安全性-- 當您建立單一實例並在執行緒之間共用它時,IronTesseract 類別是執行緒安全的。 對於高吞吐量應用,每個執行緒都會建立一個實例,或使用實例池來避免底層 Tesseract 引擎上的鎖定爭用。

條碼和二維碼協同處理-IronOCR 可以一次從同一影像中讀取條碼和二維碼,在處理混合內容文件(如運輸標籤或產品庫存表)時,無需單獨的條碼庫。

輸出格式選項-除了純文字之外,IronOCR 還可以傳回HOCR 格式的結構化數據,直接匯出為可搜尋的 PDF,並提供適合下游資料擷取工作流程的單字邊界框。

在最終確定架構之前,請查看完整的IronOCR 功能概述,以了解所有功能。

下一步計劃是什麼?

電腦視覺技術從根本上改變了光學字元辨識技術,使其從只能處理完美輸入的技術轉變為能夠處理掃描文件、照片和劣化影像等複雜情況的技術。 預處理階段——去斜、去噪、二值化和分辨率增強——解決了物理捕獲缺陷,而 CNN-LSTM 等神經網路架構提供了腳本識別智能,可以準確地解釋各種字體和手寫風格。

對於 .NET 開發人員來說,IronOCR 將這些功能打包到一個託管庫中,簡化了原生 Tesseract 集成,同時為生產使用添加了實用的增強功能。 自動預處理最佳化、詳細的置信度報告和結構化結果資料的結合,使得文件處理系統能夠可靠地處理各種真實世界的輸入——從列印文件到手寫筆記——並支援跨多種語言的多語言 OCR。

繼續前進:

下載 IronOCR 免費試用版,並使用本指南中的程式碼範例對您自己的文件進行測試。

常見問題解答

電腦視覺如何提高OCR辨識準確率?

電腦視覺透過在辨識前進行影像預處理來提高OCR的準確率。影像校正、去雜訊、二值化和解析度增強等技術可以修正物理擷取缺陷,這些缺陷會導致OCR引擎誤讀或漏讀字元。神經網路模型透過學習識別不同字體、手寫風格和劣化圖像中的文字模式,進一步提高了準確率。

IronOCR 支援哪些預處理過濾器?

IronOCR 支援透過 OcrInput API 實現的去斜、降噪、二值化、解析度增強以及其他多種濾鏡。您可以在一次處理中串聯多個濾鏡,並使用 OcrInputFilterWizard 自動發現給定文件類型的最佳濾鏡組合。

IronOCR採用的是哪一種深度學習模式?

IronOCR 由 Tesseract 5 提供支持,該技術採用 LSTM(長短期記憶)神經網路架構。結合卷積特徵提取,這種 CRNN 模型比傳統的基於模板的 OCR 系統更能有效地處理字體變化、部分遮蔽和影像品質下降等問題。

如何使用 IronOCR 進行基於區域的 OCR?

使用 OcrInput 的 AddRegion 方法,並傳入一個 CropRectangle 參數來定義目標區域的 x、y 座標、寬度和高度(以像素為單位)。 IronOCR 會將識別範圍限制在該區域內,從而提高表單和發票等結構化文件的識別速度和準確率。

IronOCR能否從掃描文件產生可搜尋的PDF檔案?

是的。在對 OcrInput 物件呼叫 Read 方法後,對 OcrResult 物件呼叫 SaveAsSearchablePdf 方法。這將產生一個 PDF 文件,其中識別出的文字作為隱藏圖層嵌入到原始掃描影像下方,從而在保持文件視覺外觀的同時,實現全文搜尋。

IronOCR支援多少種語言?

IronOCR 支援超過 125 種語言。每種語言都由一個專用的 Tesseract LSTM 模型提供支持,該模型以 NuGet 套件的形式分發。您可以同時指定多種語言,以處理混合了兩種或多種語言的文件。

預處理過濾器應該按什麼順序套用?

一般來說,先進行傾斜校正,以便後續濾鏡能夠處理正確對齊的影像。在二值化之前進行去噪,以防止偽影永久編碼到黑白轉換過程中。如果來源影像解析度較低,則應儘早進行解析度增強,因為在去雜訊之前進行放大可以避免放大壓縮偽影。

IronOCR中的置信度分數是如何計算的?

IronOCR 會為 OcrResult 中的每個識別詞傳回一個介於 0 和 1 之間的置信度分數。對於商務文檔,0.85 或更高的分數通常被認為是可靠的。低於您設定閾值的字可以被標記為需要人工審核,或送去進行二次識別。

Kannaopat Udonpant
軟體工程師
在成為軟件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人實验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因為他直接向编写大部分 IronPDF 使用的代碼的開發者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代碼或文檔時,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我