Poprawa niezadowalajacych wynikow OCR
Jakosc OCR w duzym stopniu zalezy od danych wejsciowych. Konfiguracja, filtr lub ustawienie, ktore czyta jeden dokument bez problemu, moze sie nie powiesc na innym, pozostawiajac ci pogubiony lub niekompletny tekst. Kiedy standardowy odczyt zawodzi, pakiet IronOcr.Extensions.AdvancedScan zazwyczaj eliminuje roznice w dokladnosci.
Roznica zalezy od silnika. Standard IronOCR dziala na silniku Tesseract, podczas gdy IronOcr.Extensions.AdvancedScan jest oparty na silniku PaddleOCR i dodaje mozliwosci uczenia maszynowego. Dlatego jest doskonale odpowiedni do halasliwych danych wejsciowych, takich jak zrzuty ekranu, oraz do ustrukturyzowanych zrodel, takich jak paszporty i tablice rejestracyjne.
Pakiet udostepnia specjalnie zaprojektowane metody odczytu dla tych przypadkow:
Rozwiązanie
1. Rozpocznij od ReadDocumentAdvanced() i EnhanceResolution()
Przed sieganiem po inne konfiguracje, poparuj metode ReadDocumentAdvanced() z filtrem wstepnym EnhanceResolution(). To polaczenie rozwiazuje wiekszosc problemow z dokladnoscia, z ktorymi uzytkownicy spotykaja sie przy standardowym odczycie.
Zastosuj filtr do OcrInput, a nastepnie przekaż to samo wejście do ReadDocumentAdvanced():
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadPdf("document.pdf")
' Upscale and sharpen low-resolution input before reading
input.EnhanceResolution()
Dim result = ocr.ReadDocumentAdvanced(input)
Console.WriteLine(result.Text)
End Using
ReadDocumentAdvanced() uruchamia silnik uczenia maszynowego PaddleOCR do analizy dokumentow z uwzglednieniem ukladu, obfitujacych w tekst, podczas gdy EnhanceResolution() powieksza i wyostrza dane wejsciowe o niskiej rozdzielczosci przed odczytem. Niska rozdzielczosc jest czestym korzeniem zlych wynikow, wiec ten krok wstepnego przetwarzania czesto jest tak samo wazny, jak zmiana silnika.
2. Celuj w x64 na .NET Framework
Skonfiguruj projekty .NET Framework do budowy jako x64. AdvancedScan potrzebuje znacznej ilosci pamieci i uruchamianie go pod inna architektura moze wywolywac bledy w czasie rzeczywistym. Zobacz przewodnik Advanced Scan na .NET Framework dla pelnej konfiguracji.
Ograniczenia
AdvancedScan zapewnia wysoka dokladnosc, ale dzisiaj obowiazuja niektore ograniczenia:
- Mniej funkcji w wynikach: Obiekty wynikowe AdvancedScan eksponuja mniej wlasciwosci niz standardowy obiekt
OcrResult. - Inne typy zwracanych wynikow: kazda metoda odczytu zwraca inny typ obiektu wynikowego, wiec sprawdz Dokumentacje API dla szczegolow dotyczacych tego, ktory wywolujesz.
- Brak przeszukiwalnych PDF: budowanie przeszukiwalnych PDF z wyjscia AdvancedScan nie jest jeszcze obslugiwane, choc funkcja jest w trakcie rozwoju.
- Ograniczone jezyki: pakiet obecnie obsluguje jezyki angielski, chinski, japonski, koreanski oraz alfabety lacinskie.

