Gelişmiş Okuma için OCR Yapılandırması
IronOCR, standart OCR'nin ötesine geçen ReadPassport, ReadLicensePlate ve ReadPhoto gibi gelişmiş tarama okuma yöntemleri sunar. Bu yöntemler IronOcr.Extensions.AdvancedScan paketi tarafından desteklenmektedir. Bu yöntemlerin metni nasıl işlediğini ince ayarlamak için IronOCR, karakter beyaz listeleme, kara listeleme, barkod tespiti, veri tablosu okuma ve daha fazlası üzerinde tam kontrol sağlayan TesseractConfiguration sınıfını kullanıma sunar.
Bu makale, gelişmiş okuma için mevcut TesseractConfiguration özellikleri ve gerçek dünya senaryolarında OCR'yi yapılandırmak için pratik örnekler üzerinde durmaktadır.
Hızlı Başlangıç: OCR Çıktısını Karakter Beyaz Listesine Sınırlama
Çağırmadan önce WhiteListCharacters üzerinde TesseractConfiguration ayarlayın Read. Beyaz listede olmayan herhangi bir karakter sonuçta sessizce bırakılır, bu şekilde hiçbir ek işleme gerek kalmadan gürültü ortadan kaldırılır.
-
IronOCR aşağıdaki NuGet Paket Yöneticisi ile yükleyin
-
Bu kod parçacığını kopyalayın ve çalıştırın.
var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronOCR kullanmaya başlayın
Gelişmiş Okuma için OCR Nasıl Yapılandırılır
- NuGet'ten IronOCR'yi yükleyin
- IronOcr.Extensions.AdvancedScan paketini yükleyin
BeyazListKarakterlerveReadBarCodesgibiTesseractConfigurationözelliklerini yapılandırınOcrInputile giriş görüntüsünü yükleyin- Görüntüyü,
ReadPhoto,ReadLicensePlateveyaReadPassportgibi gelişmiş bir yöntemle okuyun
TesseractConfiguration Özellikleri
TesseractConfiguration sınıfı, OCR davranışını özelleştirmek için aşağıdaki özellikleri sağlar. Bunlar IronTesseract.Configuration aracılığıyla ayarlanır.
| Özellik | Tür | Açıklama |
|---|---|---|
BeyazListKarakterler |
string | Bu dizede bulunan yalnızca karakterler OCR çıktısında tanınır. Diğer tüm karakterler hariç tutulur. |
KaraListKarakterler |
string | Bu dizedeki karakterler aktif olarak göz ardı edilir ve OCR çıktısından çıkarılır. |
ReadBarCodes |
bool | OCR işlemi sırasında belge içinde barkod algılama işlemini etkinleştirir veya devre dışı bırakır. |
ReadDataTables |
bool | Tesseract kullanarak belge içinde tablo yapısı algılamasını etkinleştirir veya devre dışı bırakır. |
SayfaSegmentasyonModu |
TesseractSayfaSegmentasyonModu | Tesseract'ın giriş görüntüsünü nasıl segmentasyona ayıracağını belirler. Seçenekler arasında AutoOsd, Auto, SingleBlock, SingleLine, SingleWord ve daha fazlası bulunur. |
AranabilirPdfRendereEt |
bool | Etkinleştirildiğinde OCR çıktısı, görünmez metin katmanıyla aranabilir bir PDF olarak kaydedilebilir. |
HocrRendereEt |
bool | Etkinleştirildiğinde, OCR çıktısı daha fazla işlem veya dışa aktarma için hOCR verilerini içerir. |
TesseractVariables |
Dictionary<string, object> | Ayrıntılı kontrol için düşük seviyeli Tesseract yapılandırma değişkenlerine doğrudan erişim sağlar. |
TesseractVariables sözlüğü daha da ileri giderek yüksek seviyeli özelliklerin yeterli olmadığı durumlarda yüzlerce altta yatan Tesseract motoru parametresini ortaya çıkarır.
Aşağıdaki örnekler, karakter beyaz listelemesiyle başlayarak her özellik grubunu göstermektedir.
Plaka için Karakter Beyaz Listesi Kurulumu
WhiteListCharacters için yaygın bir kullanım durumu, OCR çıktısını yalnızca bir plaka üzerinde görünebilecek karakterlerle sınırlamaktır: büyük harfler, rakamlar, kısa çizgiler ve boşluklar. Bu, motoru beklenmedik karakter kümesinin dışına çıkmaya teşvik ederek gürültüyü elimine eder ve doğruluğu artırır.
Giriş
Aşağıdaki araç kaydı kaydı, büyük harfli metin, küçük harfli metin, özel semboller (@, $, #, |, *), ve noktalama işaretlerini içerir.
BlackListCharacters, , and*` gibi bilinen gürültü sembollerini aktif olarak dışlayarak beyaz listeyi tamamlar.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;
// Initialize the Tesseract OCR engine
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only characters that appear on license plates
WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
// Blacklist common noise characters
BlackListCharacters = "`~@#$%&*",
};
var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Print the filtered text result to the console
Console.WriteLine(results.Text);
Imports IronOcr
' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
' Whitelist only characters that appear on license plates
.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
' Blacklist common noise characters
.BlackListCharacters = "`~@#$%&*"
}
Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Print the filtered text result to the console
Console.WriteLine(results.Text)
Çıktı
Beyaz listeleme filtrelemesi sonuçlarda açıkça görülmektedir:
- "Plaka: ABC-1234" "P ABC-1234" olur. Küçük harf "geç" kelimesi bırakılırken, plaka numarası olduğu gibi korunur.
- "Şasi No: 1HGBH41JXMN109186" "Şasi No 1HGBH41JXMN109186" olur. İki nokta bırakılır, ancak büyük harfli şasi no ve tam sayı korunur.
- "Sahibi: john.doe@email.com" "S" olur. Tüm küçük harfli e-posta ve noktalama işaretleri kaldırılır.
- "Bölge: CA-90210 | Bölge #5" olur "B CA-90210 Z 5". Boru (
|) and hash (#) kaldırılırken, büyük harfler ve rakamlar kalır. - *"Ücret: $125.00 + vergi" "U 12500"** olur. Dolar işareti, ondalık nokta, artı işareti ve küçük harfli "vergi" tamamen kaldırılır.
- "Referans: ~kayıt_v2^son" "R 2" olur. Tilde (
~), alt çizgi, şapka (^) ve tüm küçük harfli karakterler çıkarılır.
Aynı WhiteListCharacters ve BlackListCharacters yaklaşımı yalnızca plaka değil, herhangi bir belge türü için çalışır. Bir sonraki bölüm, okunmayı aynı anda genişletmek ve barkodları ve tablo yapılarını algılamayı gösterir.
Barkod ve Veri Tablosu Okuma Yapılandırması
IronOCR, belgeler içindeki metinlerin yanı sıra barkodları ve yapılandırılmış tabloları algılayabilir. Bu özellikler TesseractConfiguration aracılığıyla kontrol edilir:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-3.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Enable barcode detection within documents
ReadBarCodes = true,
// Enable table structure detection
ReadDataTables = true,
};
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.ReadBarCodes = True, ' Enable barcode detection within documents
.ReadDataTables = True ' Enable table structure detection
}
- ReadBarCodes:
trueayarlandığında, IronOCR metinlerin yanı sıra belgede barkodları tarar. Barkodların beklenmediği durumlarda barkod tespitini atlamak ve işlemi hızlandırmak içinfalseayarlayın. - ReadDataTables:
trueayarlandığında, Tesseract belgede tablo yapılarını tespit etmeye ve korumaya çalışır. Bu, faturalar, raporlar ve diğer tablo içeren belgeler için yararlıdır.
Bu seçenekler WhiteListCharacters ve BlackListCharacters ile birleşebilir, karmaşık belgelerden neyin çıkarılacağı üzerinde hassas kontrol sağlar.
Filtreleme ve algılama, neyin çıkarılacağını kontrol ederken, düzen yorumlama ayrı bir endişe konusudur. Bir sonraki bölüm, belge türü için doğru PageSegmentationMode seçimi nasıl yapılır üzerinde durmaktadır.
Sayfa Segmentasyonu Modunu Kontrol Etme
PageSegmentationMode, tanıma başlamadan önce giriş görüntüsünü nasıl segmentleyeceğini Tesseract'a bildirir. Belirli bir düzen için yanlış modun seçilmesi, motorun metinleri yanlış okumasına veya tamamen atlamasına neden olur.
| Mod | Kullanım Durumu |
|---|---|
AutoOsd |
Oryantasyon ve yazı algılama ile otomatik düzen analizi |
Auto |
OSD olmaksızın otomatik düzen analizi (varsayılan) |
SingleColumn |
Resmin tek bir metin sütunu olduğu varsayılır |
SingleBlock |
Resmin tek bir tekdüze metin bloğu olduğu varsayılır |
SingleLine |
Resmin tek bir metin satırı olduğu varsayılır |
SparseText |
Herhangi bir sıralamada mümkün olduğunca fazla metni bulur |
Tek satırlık bir etiket veya afiş için SingleLine çok bloklu analizi ortadan kaldırır ve hem hız hem de doğruluğu artırır.
Giriş
single-line-label.png, tam olarak bir satır kalın Courier metni içeren dar bir gönderi etiketidir: SHIPPING LABEL: TRK-2024-XR9-001.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-4.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}
Using input As New OcrInput()
input.LoadImage("single-line-label.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Metin yerleşiminin düzensiz olduğu bir taranmış sayfa için, SparseText, Auto'den daha fazla içerik kurtarır.
Giriş
receipt-scan.png, dört satırlık öğe (kahve, muffin, meyve suyu, granola bar), kesikli bir ayırıcı, ara toplam, vergi ve toplam içeren bir Corner Market termal fişidir. Bu tür bir düzende sabit blok segmentasyonu, farklı yatay pozisyonlardaki girdileri kaçırır.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-5.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SparseText
}
Using input As New OcrInput()
input.LoadImage("receipt-scan.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Düzen segmentasyonu belge türüne göre ayarlandıktan sonra, sonraki adım, sonraki işlemler için çıkış formatını kontrol etmektir.
Aranabilir PDF'ler ve hOCR Çıktısı Üretme
RenderSearchablePdf ve RenderHocr, IronOCR'nin düz metin sonucunun yanı sıra ürettiği çıktı formatlarını kontrol eder.
RenderSearchablePdf, taranmış görüntü görünür durumda kalırken kullanıcıların arama ve kopyalama yapabildikleri bir PDF üreterek, orijinal görüntünün üzerine görünmez bir metin katmanı ekler. Bu, belge arşivleme iş akışları için standart çıktı formatıdır.
Giriş
scanned-document.pdf, IronOCR Solutions Ltd.'den gelen (15 Mart 2024 tarihli, referans DOC-2024-OCR-0315) tek sayfalık bir iş mektubudur. Sonuç searchable-output.pdf olarak kaydedilir.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-6.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
RenderSearchablePdf = true,
};
using OcrInput input = new OcrInput();
input.LoadPdf("scanned-document.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderSearchablePdf = True
}
Using input As New OcrInput()
input.LoadPdf("scanned-document.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
Çıktı
Çıkış, girişle aynı görünen ancak gizli bir metin katmanı içeren bir PDF'dir. searchable-output.pdf açın ve gömülü metnin aranabilir ve kopyalanabilir olduğunu doğrulamak için Ctrl+F kullanın.
RenderHocr, her kelime için sınırlayıcı kutu koordinatları ile birlikte metin içeriğini kodlayan bir HTML dosyası olan hOCR belgesi üretir. Bu, redaksiyon motorları veya belge düzen analizi gibi sonraki araçların kesin kelime konumlandırmasına ihtiyaç duyduğu durumlarda yararlıdır.
Giriş
document-page.png, başlığı 'Quarterly Summary Q1 2024' olan ve gelir, işletme maliyetleri ve büyüme sürücüleriyle ilgili iki paragraf mali veri içeren bir belge sayfasıdır. Sonuç output.html olarak kaydedilir.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-7.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
RenderHocr = true,
};
using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderHocr = True
}
Using input As New OcrInput()
input.LoadImage("document-page.png")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("output.html")
End Using
Çıktı
output.html, her tanınan kelimeyi sınırlayıcı kutu koordinatlarıyla birlikte kodlar. hOCR yapısını incelemek için dosyayı tarayıcıda açın veya düzen analizi ya da sansür için bir alt akış aracına geçirin.
Eğer tek bir okuma çağrısından tüm üç çıktı formatına (düz metin, aranabilir PDF ve hOCR) ihtiyacınız varsa, her iki bayrak da aynı anda etkinleştirilebilir.
Bu çıkış bayrakları, okunan dilden bağımsız olarak çalışır; Latin olmayan yazılar da dahil. Bir sonraki bölüm, Japonca metin için karakter filtrelemeyi nasıl uygulayacağınızı gösterir.
Uluslararası Belgeler için Unicode Karakter Filtreleme
Çince, Japonca veya Korece uluslararası belgeler için, WhiteListCharacters ve BlackListCharacters özellikleri Unicode karakterleriyle çalışır. Bu, çıktıyı spesifik yazılarla sınırlamanıza olanak tanır, örneğin Japonca için yalnızca Hiragana ve Katakana.
Giriş
Belge, bir başlık (テスト), Hiragana ve Katakana'nın sesli işaret varyantları ile karışık Japonca bir cümle (プ, で), kara listeye alınmış gürültü sembolleri (★, ■) ve Kanji (価格) içeren bir fiyat satırı ve başka bir kara listeye alınmış sembol (§), daha fazla Kanji (購入), ek sesli işaret varyantları (プ, デ) ve temel Katakana (メモ, ール) içeren bir not çizgisi içerir. Beyaz liste yalnızca temel Hiragana, temel Katakana, rakamlar ve genel Japonca noktalama işaretlerini geçer; üç gürültü sembolü açıkça kara listeye alınmıştır.
Hiragana ve Katakana için Unicode karakter aralıkları, WhiteListCharacters içinde dize değişmezleri olarak geçirilir ve BlackListCharacters içinde listelenen gürültü sembolleri bulunur.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
"0123456789、。?!()¥ー",
// Blacklist common noise/symbols you want to ignore
BlackListCharacters = "★■§",
};
var ocrInput = new OcrInput();
// Load Japanese input image
ocrInput.LoadImage("jp.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);
// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
"0123456789、。?!()¥ー",
.BlackListCharacters = "★■§"
}
Dim ocrInput As New OcrInput()
' Load Japanese input image
ocrInput.LoadImage("jp.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)
' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
Çıktı
Filtrelenmiş tam çıktı, bir metin dosyası olarak mevcuttur: jp-output.txt.
Beyaz liste sadece temel Hiragana ve Katakana karakterlerini içerdiği için, türetilmiş sesli işaret varyantları gibi プ (pu) ve デ (de) düşürülür. 価格 (fiyat) ve 購入 (satın alma) gibi Kanji karakterleri de beyaz listeye alınmamış karakter setine düştüğü için dışarıda bırakılır. ★, ■ ve § gibi kara listeye alınmış semboller, beyaz listeye rağmen aktif olarak kaldırılır.
Sıradaki Adım Neresi Olmalı?
Şimdi IronOCR'yi gelişmiş okuma senaryoları için nasıl yapılandıracağınızı anladığınıza göre, keşfedin:
- Belirli belge türlerini okuma, örneğin pasaportlar ve plaka tabelaları
- Barkod ve QR kodu okuma bağımsız bir OCR kullanımı olarak
- İşlenmiş sonuçlardan hOCR ve aranabilir PDF'ler ihraç etme
Üretim kullanımı için, filigranları kaldırmak ve tam işlevselliğe erişmek üzere bir lisans edinin unutmayın.
Sıkça Sorulan Sorular
IronOCR içinde TesseractConfiguration nedir?
IronOCR'da TesseractConfiguration, karakter beyaz listeleri, barkod okuma ve çok dilli destek gibi gelişmiş okuma yeteneklerini etkinleştirmenizi sağlayan OCR ayarlarını özelleştirmenize olanak tanır.
IronOCR'da karakter beyaz listesini nasıl ayarlayabilirim?
IronOCR'da, TesseractConfiguration'ı kullanarak bir karakter beyaz listesi ayarlayabilirsiniz, bu da OCR motorunun hangi karakterleri tanıması gerektiğini belirtmenize izin verir. Bu, plaka okuma gibi görevler için faydalıdır.
IronOCR barkodları ve veri tablolarını okuyabilir mi?
Evet, IronOCR, TesseractConfiguration özelliklerinde belirli ayarları değiştirerek barkodlar ve veri tabloları okuyacak şekilde yapılandırılabilir, bu da doğru OCR veri çıkarımı sağlar.
IronOCR, Çince, Japonca ve Korece gibi uluslararası dilleri destekliyor mu?
IronOCR, çok dilli TesseractConfiguration seçenekleri aracılığıyla Çince, Japonca ve Korece gibi uluslararası dilleri destekler.
IronOCR'da ileri düzey OCR yapılandırmalarını kullanmanın faydaları nelerdir?
IronOCR'da ileri düzey OCR yapılandırmalarından yararlanmak, dil odaklı metin tanıma ve yapılandırılmış veri çıkarımı gibi özel görevlerin desteklenmesiyle daha hassas ve verimli metin tanıma sağlar.
IronOCR'u belirli OCR görevleri için optimize etmek mümkün mü?
Evet, IronOCR, karakter beyaz listeleri gibi ayarları yapılandırarak ve barkod veya tablo tanımayı etkinleştirerek belirli OCR görevleri için optimize edilebilir, hedeflenen uygulamalar için performansı artırır.
IronOCR'da çok dilli desteği nasıl etkinleştiririm?
IronOCR'da çok dilli desteği etkinleştirmek için, TesseractConfiguration'daki dil ayarlarını değiştirerek, OCR motorunun birden fazla dildeki metni tanıyabilmesine olanak tanıyabilirsiniz.
Karakter beyaz listeleri nedir ve IronOCR'de nasıl kullanılır?
IronOCR'deki karakter beyaz listeleri, OCR motorunun tanıması için yapılandırılmış belirli karakterlerin bir listesidir, sayısal veya belirli metin desenlerini okuma gibi odaklanmış görevler için idealdir.
IronOCR, yapılandırılmış veri formatlarını okumak için kullanılabilir mi?
Evet, IronOCR, barkodlar ve tablolar gibi yapılandırılmış veri formatlarını okumak ve işlemek için yapılandırılabilir ve çeşitli veri çıkarım ihtiyaçları için çok yönlü OCR yetenekleri sağlar.
IronOCR'da ileri düzey metin tanıma için hangi yapılandırmalar mevcuttur?
IronOCR, belirli gereksinimlere göre ileri düzey metin tanıma yeteneklerini artırmak için karakter beyaz listeleri, çok dilli destek ve barkod tanıma gibi yapılandırmalar sunar.

