
Fatura OCR API (Geliştirici Eğitimi)
Fatura OCR API, makine öğrenimini kullanarak fatura verilerini çıkarımı otomatik hale getirir ve hem dijital hem de taranmış belgelerden satıcı detayları, fatura numaraları ve fiyatları doğru bir şekilde yakalarken manuel giriş hatalarını ortadan kaldırır. Bu öğretici, IronOCR ile bir fatura OCR çözümü oluşturmayı gösterir.
Makine öğrenimi ve bilgisayarlı görmeyi kullanarak, Fatura OCR teknolojisi, fatura verilerini otomatik işlemeye hazır formatlara dönüştürür. Manuel veri giriş hatalarını, gecikmelerini ve maliyetlerini nasıl aşacağınızı ve herhangi bir fatura formatından satıcı bilgilerini, fatura numaralarını ve fiyatları nasıl doğru bir şekilde çıkaracağınızı öğreneceksiniz.
Bu makale, .NET geliştiricileri için öncü bir fatura OCR API olan IronOCR kullanıyor.
Fatura OCR API'si Nasıl Oluşturulur
- Fatura OCR API'sini Yükleyin ve Kurun
- Visual Studio'da yeni bir C# projesi oluşturun veya mevcut bir tanesini açın.
- Load an existing image file using
methodOcrInput Ocr.Readyöntemi kullanarak görüntüden Metni Çıkartın.- Print the extracted text in Console using
Console.WriteLine
IronOCR Nedir?
Iron Software tarafından geliştirilen IronOCR, geliştiricilere kapsamlı OCR araçları sağlar. Makine öğrenimi ve bilgisayarlı görü kullanarak taranmış belgelerden, görüntülerden ve PDF'lerden metin çıkartır, otomatik işlemeye olanak tanır. API'si çeşitli diller ve platformlarla sorunsuz bir şekilde bütünleşir, manuel veri girişi hatalarını azaltır ve verimliliği artırır. Çıkarılan veriler, analiz ve karar verme için doğrudan mevcut sistemlere akar. görüntü ön işleme, barkod tanıma ve esnek dosya ayrıştırma gibi özellikleri, çok yönlülüğünü artırır. IronOCR, geliştiricilere uygulamalarına sağlam metin tanıma ekleme yetkisi verir.
Kütüphane, küresel fatura işleme için ideal hale gelen 125 uluslararası dili özel dil paketleri aracılığıyla destekler. Gelişmiş özellikler, özellikle değişen düzenlere sahip faturalar için kullanışlı olan metni otomatik olarak bulmak için bilgisayarlı görü içerir. Ek olarak, IronOCR, yüksek hacimli fatura işlemini verimli bir şekilde yönetmek için çoklu iş parçacıklı işleme yetenekleri sağlar.
Fatura İşleme için Neden IronOCR Kullanmalıyım?
IronOCR, fatura işleme uygulamaları için ikna edici avantajlar sunar. İlk olarak, .NET uygulamaları için özel olarak geliştirilen optimize edilmiş Tesseract 5 motoru ile olağanüstü doğruluk sağlar. Kütüphane, taranmış belgelerden PDF dosyalarına kadar çeşitli fatura formatlarını ve hatta düşük kaliteli taramaları da başa çıkar.
Yerleşik görüntü optimizasyon filtreleri işlemden önce görüntü kalitesini otomatik olarak artırır, daha doğru metin çıkarımıyla sonuçlanır. Belirli gereksinimlere sahip faturalar için, IronOCR, fatura türlerinizde yaygın olan benzersiz yazı tipleri veya formatlar için optimizasyon sağlayan özel dil eğitimini destekler.
Diğer OCR Kütüphanelerinden IronOCR'yi Farklı Yapan Nedir?
IronOCR, kurumsal düzeyde özellikleri korurken basit tek satır OCR yeteneği ile kendisini ayırır. Ham Tesseract uygulamalarından farklı olarak, IronOCR, karmaşık işlemleri sorunsuz bir şekilde yöneten bir yönetilen .NET API sağlar. Kütüphane, çeşitli belge türleri için özelleştirilmiş belge okuma yöntemleri sunar, özellikle fatura satır öğeleri için gerekli olan belgelerdeki tabloları okuma konusuna özel destek verir.
Filtre Sihirbazı, belirli fatura görüntüleri için en iyi ön işlem ayarlarını otomatik olarak belirler, optimizasyonda tahminde bulunmayı ortadan kaldırır. IronOCR ayrıca geliştiricilerin OCR motorunun ne gördüğünü görselleştirmesi ve çıkartma sorunlarını etkili bir şekilde çözmesi için kapsamlı hata ayıklama yetenekleri sağlar.
Hangi Ön Gereksinimlere İhtiyacım Var?
IronOCR ile çalışmadan önce, bu ön koşulların yerinde olduğundan emin olun:
- Visual Studio gibi bir IDE kurulu uygun bir geliştirme ortamı
- Kod örneklerini etkili bir şekilde kavramak ve değiştirmek için C# programlamada temel bir anlayış
- IronOCR kütüphanesi projenize NuGet Paket Yöneticisi veya komut satırı aracılığıyla kurulmuş
Bu ön koşulları karşılamak, IronOCR ile başarılı bir şekilde çalışmaya dalmanız için sizi hazırlar.
IronOCR, Windows, Linux ve macOS için kapsamlı kurulum kılavuzları sağlar. Kütüphane, AWS Lambda ve Azure Fonksiyonları için özel dersler ile bulut dağıtımını destekler.
Hangi Visual Studio Sürümünü Kullanmalıyım?
IronOCR, Visual Studio'nun 2017'den en son sürümlerine kadar olan sürümlerini destekler. En iyi uyumluluk ve en yeni C# özelliklerine erişim için Visual Studio 2019 veya 2022 önerilir. Kütüphane, .NET Framework, .NET Core ve .NET 5+ ile tamamen uyumludur ve geliştirme ortamınızda esneklik sağlar.
Çapraz platform geliştirimi için, C# eklentisi ile Visual Studio Code iyi çalışır. Mobil geliştiriciler, IronOCR'nin Android ve iOS uygulamaları için yönergelerinden yararlanabilir, bu da onu .NET MAUI uygulamaları için uygun kılar.
Hangi C# Bilgi Seviyesine İhtiyacım Var?
Temel fatura OCR uygulaması için orta düzey C# bilgisi yeterlidir. Aşina olmanız gerekenler:
- Nesne yönelimli programlama kavramları
- akışlarla ve dosya girdi/çıktısı ile çalışmak
- Temel async/await desenleri
- Desen eşlemesi için düzenli ifadeler
- Hata yönetimi için istisna işleme
IronOCR'nin sezgisel API tasarımı, derin bir görüntü işleme veya makine öğrenmesi uzmanlığı gerektirmez. Kütüphane, karmaşık işlemleri dahili olarak halleder, böylece siz iş mantığına odaklanabilirsiniz. Yeni başlayanlar basit OCR örnekleri ile başlayabilir.
Yeni Bir Visual Studio Projesi Nasıl Oluşturulur?
IronOCR ile başlamak için önce yeni bir Visual Studio projesi oluşturun.
Visual Studio'yu açın, Dosya'ya gidin, Yeni üzerine gelin ve Proje'ye tıklayın.
Yeni Proje
Yeni pencerede Konsol Uygulaması'nı seçin ve Sonraki'ye tıklayın.
Konsol Uygulaması
Yeni bir pencere açılır. Proje adınızı ve konumunuzu girin, ardından Sonraki'ye tıklayın.
Proje Yapılandırması
Son olarak, Hedef çerçeveyi seçin ve Oluştur'a tıklayın.
Hedef Çerçeve
Yeni Visual Studio projeniz hazır. Şimdi IronOCR'yi kuralım.
OCR Uygulamaları İçin Hangi Proje Türü En İyi Çalışır?
Bu öğretici basitlik için bir Konsol Uygulaması kullanırken, IronOCR çeşitli proje türlerini destekler:
- Konsol Uygulamaları: Toplu işleme veya komut satırı araçları için ideal
- Web Uygulamaları: API'ler veya web tabanlı servisler oluşturmak için mükemmel
- Windows Forms/WPF: GUI ile masaüstü uygulamaları için uygun
- .NET MAUI Uygulamaları: Çapraz platform çözümler için
Yoğun işlem gereksinimleri için, IronOCR'yi Windows Hizmeti veya mikro hizmetler mimarisinde uygulamayı düşünün. Kütüphanenin ileri takip yetenekleri uzun süreli işlemleri izlemeyi kolaylaştırır.
Hangi .NET Çerçeve Sürümünü Hedeflemeliyim?
IronOCR, .NET sürümleri arasında geniş bir uyumluluk sunar. Yeni projeler için optimum performans ve en yeni özellikler için .NET 6.0 veya daha yüksek sürümleri hedefleyin. Kütüphane mükemmel geriye dönük uyumluluk sağlar:
- .NET Framework 4.6.2+: Geçmiş işletme uygulamaları için
- .NET Core 3.1: İstikrarlı dağıtımlar için uzun vadeli destek
- .NET 5.0+: Performans iyileştirmeleri ile modern çerçeve
- .NET Standart 2.0: Platformlar arası maksimum uyumluluk
Docker konteynerlerine dağıtım yaparken, .NET 6.0 veya daha yeni sürümler daha küçük resim boyutları ve daha iyi performans sağlar. Azure İşlevlerinde .NET 6.0 ve .NET Framework desteklenir.
IronOCR Nasıl Yüklenir?
IronOCR'yi indirip yüklemek için iki basit yöntem vardır:
- Visual Studio NuGet Paket Yöneticisini Kullanarak
- Visual Studio Komut Satırını Kullanarak
NuGet Paket Yöneticisi ile Komut Satırını Ne Zaman Kullanmalıyım?
Çalışma tarzınıza göre NuGet Paket Yöneticisi GUI ve komut satırı arasında seçim yapın:
NuGet Paket Yöneticisi GUI şu durumlardaki en iyi sonucu verir:
- NuGet paketlerine yeniyseniz
- IronOCR dil paketleri içinde gezinmek istiyorsanız
- Görsel teyidi tercih ediyorsanız
- Birden fazla paketi yönetiyorsanız
Komut Satırı (Paket Yöneticisi Konsolu) şu durumlarda üstünlük sağlar:
- Komut arayüzlerine aşinaysanız
- Senaryolu dağıtımları takip ediyorsanız
- Hızlı bir şekilde belirli sürümlere ihtiyacınız varsa
- gelişmiş kurulum seçeneklerini kullanıyorsanız
Her iki yöntem de aynı sonuçları elde eder—rahatlık ve gereksinimlere göre seçim yapın.
Hangi Ek Dil Paketlerine İhtiyacım Olabilir?
IronOCR, 125 uluslararası dili özel paketler aracılığıyla destekler. Fatura işlem süreci için düşünülmesi gerekenler:
- İş odaklı paketler: Mali belgeler için Finansal Dil Paketi
- Bölgesel diller: Fatura kaynaklarına dayalı (İspanyolca, Fransızca, Almanca)
- Çoklu dil desteği: birden fazla dili barındıran faturalar için
- Özel diller: Özel fontlar veya özel eğitim verileri için
Dil paketleri ana IronOCR paketi ile birlikte yüklenir ve İngilizce dışındaki metinlerde doğruluğu önemli ölçüde artırır.
Visual Studio NuGet Paket Yöneticisini Kullanma
C# projenize IronOCR'yi Visual Studio NuGet Paket Yöneticisi kullanarak dahil edin.
Araçlar > NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet bölümüne gidin.
NuGet Paket Yöneticisi
IronOCR'yi arayın ve paketi projenize yükleyin.
NuGet Paket Yöneticisi UI'de IronOCR paketini seçin
Aynı yöntemle ek dil paketlerini yükleyin.
Visual Studio Komut Satırını Kullanma
-
Visual Studio'da Araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi Konsolu bölümüne gidin.
-
Paket Yöneticisi Konsolu'nda bu komutu girin:
Paket Yöneticisi Konsolu
Paket, mevcut projenize indirilir ve kurulur, kullanıma hazırdır.
IronOCR ile Faturaların Verisini Nasıl Çıkarırım?
IronOCR ile yalnızca birkaç kod satırı kullanarak fatura verilerini kolayca çıkarın. Bu, manuel veri girişinin yerini alır ve iş akışınızı hızlandırır.
Metin çıkarma için örnek fatura burada:
Örnek fatura
Bu faturadan tüm veriyi çıkaralım:
using IronOcr;
using System;
// Initialize a new instance of the IronTesseract class
// This is the main OCR engine that will process our invoice
var ocr = new IronTesseract();
// Configure OCR settings for better invoice processing
ocr.Configuration.BlackListCharacters = "~`$#^*_}{]___PROTECTED_LINK_48___ method from ___PROTECTED_LINK_49___ class. Key enhancements include:
- **Image preprocessing**: ___PROTECTED_LINK_50___ corrects tilted scans; ___PROTECTED_LINK_51___ removes artifacts
- **Resolution enhancement**: Setting ___PROTECTED_LINK_52___ improves recognition
- **Character blacklisting**: Prevents common OCR misinterpretations
- **Confidence scoring**: Assesses extraction reliability
!___PROTECTED_LINK_53___
**Invoice Parser**
### How Do I Handle Different Invoice Formats?
Invoice formats vary between vendors, but IronOCR provides flexible solutions:
1. **Template-based**: Define ___PROTECTED_LINK_54___
2. **Computer vision**: Use ___PROTECTED_LINK_55___ to locate text
3. **Table extraction**: Leverage ___PROTECTED_LINK_56___ for line items
4. **Multi-format**: Process ___PROTECTED_LINK_57___, ___PROTECTED_LINK_58___, and ___PROTECTED_LINK_59___
For complex layouts, implement the ___PROTECTED_LINK_60___ which uses machine learning to identify structures automatically.
### What Are Common Extraction Patterns for Invoice Data?
Invoice data follows recognizable patterns extractable using regular expressions with OCR results:
```C#
using IronOCR;
using System;
using System.Text.`RegularExpressions`;
using System.Collections.Generic;
public class `InvoiceDataExtractor`
{
private readonly `IronTesseract` ocr;
public `InvoiceDataExtractor`()
{
ocr = new `IronTesseract`();
// Configure for optimal invoice reading
`ocr.Configuration`.`ReadBarcodes` = true; // Many invoices include barcodes
`ocr.Configuration`.`TesseractVersion` = `TesseractVersion`.Tesseract5;
}
public `InvoiceData` `ExtractInvoiceData`(string imagePath)
{
var invoiceData = new `InvoiceData`();
using (var input = new `OcrInput`(imagePath/))
{
// Apply filters for better accuracy
input.`EnhanceResolution`(300/);
`input.Sharpen`();
var result = `ocr.Read`(input/);
var text = `result.Text`;
// Extract invoice number
invoiceData.`InvoiceNumber` = `ExtractPattern`(text,
@"INV[/-]?\d{4}[/-]?\d{5}|Invoice\s*#?\s*:?\s*(\d+)");
// Extract dates
invoiceData.`InvoiceDate` = `ExtractDate`(text,
@"Invoice\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");
invoiceData.`DueDate` = `ExtractDate`(text,
@"Due\s*Date\s*:?\s*(\d{1,2}[/-]\d{1,2}[/-]\d{2,4})");
// Extract amounts
`invoiceData.Total` = `ExtractAmount`(text,
@"Total\s*:?\s*\$?\s*([\d,]+\.?\d*)");
`invoiceData.Tax` = `ExtractAmount`(text,
@"Tax\s*:?\s*\$?\s*([\d,]+\.?\d*)");
// Extract vendor information
invoiceData.`VendorName` = `ExtractVendorName`(text/);
// Extract line items using table detection
invoiceData.`LineItems` = `ExtractLineItems`(result/);
// Extract any barcodes found
if (`result.Barcodes`.Length > 0)
{
invoiceData.`BarcodeValues` = new List<string>();
foreach (var barcode in `result.Barcodes`)
{
invoiceData.`BarcodeValues`.Add(`barcode.Value`);
}
}
}
return invoiceData;
}
private string `ExtractPattern`(string text, string pattern)
{
var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
return `match.Success` ? `match.Value` : `string.Empty`;
}
private `DateTime`? `ExtractDate`(string text, string pattern)
{
var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
if (`match.Success` && `match.Groups`.Count > 1)
{
if (`DateTime`.`TryParse`(`match.Groups`[1].Value, out `DateTime` date))
return date;
}
return null;
}
private decimal `ExtractAmount`(string text, string pattern)
{
var match = Regex.Match(text, pattern, `RegexOptions`.`IgnoreCase`);
if (`match.Success` && `match.Groups`.Count > 1)
{
var amountStr = `match.Groups`[1].Value.Replace(",", "");
if (decimal.`TryParse`(amountStr, out decimal amount))
return amount;
}
return 0;
}
private string `ExtractVendorName`(string text)
{
// Usually the vendor name appears in the first few lines
var lines = `text.Split`('\n'/);
if (`lines.Length` > 0)
{
// Simple heuristic: first non-empty line that's not a common header
foreach (var line in lines)
{
var trimmed = `line.Trim`();
if (!string.`IsNullOrEmpty`(trimmed/) &&
!trimmed.`ToLower`().Contains("invoice") &&
`trimmed.Length` > 3)
{
return trimmed;
}
}
}
return `string.Empty`;
}
private List<`LineItem`> `ExtractLineItems`(`OcrResult` result)
{
var lineItems = new List<`LineItem`>();
// Use IronOCR's table detection capabilities
if (`result.Tables` != null && `result.Tables`.Count > 0)
{
foreach (var table in `result.Tables`)
{
// Process each row as a potential line item
for (int i = 1; i < table.`RowCount`; i++) // Skip header row
{
var item = new `LineItem`
{
Description = table[i, 0]?.Text ?? "",
Quantity = `ParseQuantity`(table[i, 1]?.Text),
`UnitPrice` = `ParseAmount`(table[i, 2]?.Text),
Total = `ParseAmount`(table[i, 3]?.Text)
};
if (!string.`IsNullOrEmpty`(`item.Description`/))
`lineItems.Add`(item/);
}
}
}
return lineItems;
}
private int `ParseQuantity`(string text)
{
if (string.`IsNullOrEmpty`(text/)) return 0;
var cleaned = Regex.Replace(text, @"[^\d]", "");
return int.`TryParse`(cleaned, out int qty) ? qty : 0;
}
private decimal `ParseAmount`(string text)
{
if (string.`IsNullOrEmpty`(text/)) return 0;
var cleaned = Regex.Replace(text, @"[^\d.]", "");
return decimal.`TryParse`(cleaned, out decimal amt) ? amt : 0;
}
}
// Data classes for structured invoice information
public class `InvoiceData`
{
public string `InvoiceNumber` { get; set; }
public `DateTime`? `InvoiceDate` { get; set; }
public `DateTime`? `DueDate` { get; set; }
public string `VendorName` { get; set; }
public decimal Total { get; set; }
public decimal Tax { get; set; }
public List<`LineItem`> `LineItems` { get; set; }
public List<string> `BarcodeValues` { get; set; }
}
public class `LineItem`
{
public string Description { get; set; }
public int Quantity { get; set; }
public decimal `UnitPrice` { get; set; }
public decimal Total { get; set; }
}
Faturalardan Belirli Verileri Çıkarmak için Fatura İşleme
Müşteri fatura numaraları gibi belirli fatura verilerini bu kodla çıkarın:
using IronOCR;
using System;
using System.Text.`RegularExpressions`;
// `IronTesseract` sınıfının yeni bir örneğini başlat
var ocr = new `IronTesseract`();
// `OcrInput` nesnesini kullanarak resim dosyasını yükle
using (var input = new `OcrInput`(@"`r2.png`"/))
{
// Resim üzerinde OCR gerçekleştirin
var result = `ocr.Read`(input/);
// Fatura numarası için bir normal ifade deseni tanımlayın
var linePattern = @"INV\/\d{4}\/\d{5}";
// Çıkarılan metin üzerinde deseni eşleştirin
var lineMatch = Regex.Match(`result.Text`, linePattern);
// Desenin metnin herhangi bir kısmı ile eşleşip eşleşmediğini kontrol edin
if (`lineMatch.Success`)
{
// Eşleşme bulunursa, fatura numarasını yazdırın
var lineValue = `lineMatch.Value`;
Console.`WriteLine`("Müşteri Fatura numarası: " + lineValue);
}
}
Fatura Tarama
Karmaşık çıkarım senaryoları için, fatura türleriniz için optimize etmek üzere özelleşmiş OCR yapılandırmaları kullanın. OcrResult sınıfı, doğrulama için her tanınan eleman hakkında ayrıntılı bilgiler, koordinatlar ve güven skoru içerir.
Fatura OCR API'nin Temel Faydaları Nelerdir?
IronOCR'nin Fatura OCR API'si fatura işleme süreçlerini makine öğrenimi ve bilgisayarlı görü ile dönüştürür. Bu teknoloji, fatura metnini makine tarafından okunabilir formatlara dönüştürerek analiz, entegrasyon ve süreç iyileştirme için veri çıkarımını basitleştirir. Faturalama işlemleri için güçlü otomasyon sağlar, doğruluğu artırır ve hesaplar gibi iş akışlarını optimize eder.
IronOCR, ek yapılandırma gerektirmeyen optimize edilmiş Tesseract sonuçları ile olağanüstü doğruluk sunar. Çok sayfalı kareli TIFF, PDF dosyaları ve tüm popüler görüntü formatlarını destekler. Görüntülerden barkod okuma başka bir çıkarım boyutunu ekler.
Fatura işleme için ana faydalar:
- Zaman Tasarrufu: Saatleri saniyelere indirmek
- Doğruluk: güven skorlama ile hataları minimize etme
- Esneklik: çoklu işlem ile binlerce işlemek
- Entegrasyon: arama yapılabilir PDF'lere ya da yapılandırılmış formatlara aktarım
- Maliyet Azaltma: Operasyonel maliyetleri düşürmek
Kütüphanenin dağıtım esnekliği, mevcut sistemlere entegrasyona olanak tanır—yerinde, bulut veya hibrit. Docker, Azure ve AWS desteği ile IronOCR, ihtiyaçlarınıza göre ölçeklenir.
Üretim ortamları, IronOCR'nin lisanslama seçenekleri ile özel destek ve düzenli güncellemelerden fayda sağlar. Kütüphanenin sorun giderme kılavuzları ve mühendislik desteği, sorunsuz uygulama sağlar.
IronOCR hakkında daha fazla bilgi için ana sayfayı ziyaret edin. Ek fatura OCR eğiticileri için, bu ayrıntılı fatura OCR kılavuzuna bakın. Fatura alanları için bilgisayarlı görüş kullanımı hakkında bilgi edinmek için bu bilgisayarlı görüş eğiticiye göz atınız.

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.
İlgili Makaleler

