IRONSOFTWAREHOME
PORÓWNAJ Z INNYMI KOMPONENTAMI

AWS vs Google Vision (Porównanie funkcji OCR)

Kannaopat Udonpant
Kannapat Udonpant
Updated: 28 czerwca 2026

Dynamsoft Label Recognizer wykonuje jedną rzecz wyjątkowo dobrze — wyodrębnianie MRZ z paszportów, skanowanie numerów VIN z pojazdów oraz odczytywanie ustrukturyzowanych etykiet z opakowań przemysłowych — i nie wykonuje żadnych innych zadań. Ta wąska specjalizacja staje się problemem budżetowym w momencie, gdy aplikacja wymaga dodatkowo ogólnego OCR dokumentów, ponieważ wtedy trzeba nabyć licencję naDynamsoft Label Recognizerdo MRZ, Dynamsoft BarCode Reader do kodów QR, Dynamsoft Document Normalizer do wykrywania krawędzi, a nadal szukać czwartej biblioteki do obsługi dokumentów całostronicowych. IronOCR obejmuje wszystkie te możliwości w jednym pakiecie NuGet przy $999 wieczystym.

Zrozumienie programu Dynamsoft Label Recognizer

Firma Dynamsoft Corporation z siedzibą w Vancouver w Kanadzie stworzyła swój produkt Label Recognizer w oparciu o konkretną propozycję: niezawodne rozpoznawanie tekstu strukturalnego nadającego się do odczytu maszynowego w ograniczonych formatach. Pakiet NuGet dla produktu to Dynamsoft.DotNet.LabelRecognizer, a jego licencjonowanie komercyjne działa wyłącznie na zasadzie subskrypcji rocznej — nie ma opcji wieczystej. Skontaktuj się z Dynamsoft w sprawie aktualnych stawek.

Model rozpoznawania biblioteki opiera się na szablonach. Konfigurujesz zadania rozpoznawania poprzez JSON settings API (AppendSettingsFromString), a następnie wywołujesz RecognizeFile lub RecognizeByFile dla plików obrazów. Wyniki są zwracane jako zbiory wyników wierszowych zawierające surowe ciągi tekstowe. Analiza tych ciągów znaków w celu uzyskania sensownych danych strukturalnych — przesunięcia pól, konwersje dat, sprawdzanie cyfr kontrolnych — leży całkowicie w Twojej odpowiedzialności.

Kluczowe cechy architektury Dynamsoft Label Recognizer:

  • Silnik rozpoznawania oparty na szablonach: wzorce MRZ, VIN i etykiet wymagają konfiguracji szablonu JSON przed rozpoznaniem
  • Tylko surowy wynik tekstowy: RecognizeFile zwraca obiekty LineResult z łańcuchami tekstowymi; brak parsowania pól strukturalnych
  • Wprowadzanie wyłącznie obrazów: brak natywnej obsługi plików PDF; Pliki PDF wymagają zewnętrznej konwersji na obrazy przed przetworzeniem
  • Licencjonowanie subskrypcji rocznej: Dostępne poziomy per urządzenie i per serwer; skontaktuj się z Dynamsoft w sprawie aktualnych stawek; no one-time purchase
  • Oddzielny produkt dla każdej funkcji: odczyt BarCode, normalizacja dokumentów i optymalizacja kamery wymagają osobno licencjonowanego produktu
  • Ograniczony zakres językowy: skupia się na formatach MRZ z alfabetem łacińskim; brak szerokiego wsparcia dla dokumentów wielojęzycznych

Interfejs API ustawień środowiska uruchomieniowego JSON

Każdy proces pracy wDynamsoft Label Recognizerrozpoczyna się od konfiguracji szablonu. Na przykład rozpoznawanie MRZ wymaga załadowania dokumentu JSON, który określa parametry rozpoznawania, modele znaków i odniesienia do regionów, zanim będzie można przystąpić do przetwarzania obrazu:

using Dynamsoft.DLR;

public class DynamsoftMrzService : IDisposable
{
    private readonly LabelRecognizer _recognizer;

    public DynamsoftMrzService(string licenseKey)
    {
        // Static license initialization — must precede instance creation
        LabelRecognizer.InitLicense(licenseKey);
        _recognizer = new LabelRecognizer();

        // MRZ requires specific template configuration loaded as JSON
        string mrzTemplate = @"{
            ""LabelRecognizerParameterArray"": [{
                ""Name"": ""MRZ"",
                ""ReferenceRegionNameArray"": [""FullImage""],
                ""CharacterModelName"": ""MRZ""
            }]
        }";
        _recognizer.AppendSettingsFromString(mrzTemplate);
    }

    public string ExtractRawMrz(string passportImagePath)
    {
        var results = _recognizer.RecognizeFile(passportImagePath);

        // Returns raw MRZ text lines only — no field parsing
        var mrzLines = new StringBuilder();
        foreach (var result in results)
        {
            foreach (var lineResult in result.LineResults)
            {
                mrzLines.AppendLine(lineResult.Text);
            }
        }
        return mrzLines.ToString().Trim();
    }

    public void Dispose() => _recognizer?.Dispose();
}

Wynik RecognizeFile to surowy tekst MRZ, taki jak P<GBRSMITH<<JOHN<<<<<<<<<<<<<<<<<<<<<<<<<<<. Aby uzyskać Surname = "SMITH", GivenNames = "JOHN", DocumentNumber, DateOfBirth i ExpiryDate jako typowane właściwości, należy samodzielnie zaimplementować parser TD1/TD2/TD3. Dokumentacja Dynamsoft i pliki źródłowe w tym repozytorium szacują ten parser na około 150 linii kodu parsującego — obsługującego przesunięcia znaków, << separatory nazw, rozróżnianie dwu cyfrowego roku i weryfikację sumy kontrolnej — żadnej z tych rzeczy Dynamsoft nie dostarcza.

Zrozumienie IronOCR

IronOCR to komercyjna biblioteka OCR dla platformy .NET, oparta na zoptymalizowanym silniku Tesseract 5 z warstwą zarządzanego interfejsu API, która obsługuje przetwarzanie wstępne, formaty wejściowe, ustrukturyzowane dane wyjściowe oraz specjalistyczne parsowanie dokumentów. Instalacja to pojedyncza komenda NuGet: dotnet add package IronOcr. Brak natywnego zarządzania plikami binarnymi, brak konfiguracji folderu tessdata, brak plików konfiguracyjnych szablonów.

Kluczowe cechy:

  • Ogólnego przeznaczenia i specjalistyczne: Obsługuje OCR dokumentów całostronicowych, wielostronicowych plików PDF, partii zeskanowanych obrazów oraz formatów specjalistycznych (paszporty, BARCODE, tablice rejestracyjne) z tego samego pakietu
  • Automatyczny proces przetwarzania wstępnego: funkcje Deskew, DeNoise, Contrast, Binarize i EnhanceResolution działają bez ręcznej konfiguracji na danych wejściowych o niskiej jakości
  • Natywna obsługa plików PDF: bezpośredni odczyt zeskanowanych i cyfrowych plików PDF, w tym plików chronionych hasłem, bez konieczności zewnętrznej konwersji
  • Ustrukturyzowana hierarchia wyników: Wyniki przedstawiają strony, akapity, wiersze, słowa i ramki znaków wraz z wynikami pewności
  • Wbudowane odczytywanie kodów kreskowych: Włącz ocr.Configuration.ReadBarCodes = true i kody kreskowe są wyodrębniane razem z tekstem w tym samym przebiegu.
  • Ponad 125 pakietów językowych: każdy język instaluje się jako oddzielny pakiet NuGet; brak zarządzania folderami tessdata
  • Licencjonowanie wieczyste: $999 Lite, $1,499 Plus, $2,399 Professional — jednorazowy zakup, wszystkie platformy, wszystkie funkcje w zestawie.
  • Wdrażanie wielopłatformowe: Windows, Linux, macOS, Docker, AWS i Azure działają z tego samego pakietu bez konfiguracji specyficznej dla platformy

Porównanie funkcji

FunkcjaDynamsoft Label RecognizerIronOCR
Ogólne OCR dokumentówNieobsługiwanePełne wsparcie
Wyodrębnianie MRZSpecjalistyczne (tekst surowy)Wbudowane z analizowanymi polami
Natywne wprowadzanie plików PDFNieobsługiwaneTak
Odczytywanie BarCodeOddzielny produkt (Dynamsoft BarCode Reader)Zintegrowane (ReadBarCodes)
Wynik w formacie PDF z możliwością wyszukiwaniaNieobsługiwaneTak
Obsługa językówOgraniczone (Latin MRZ)Ponad 125 języków
Model licencyjnyTylko subskrypcja rocznaOpcje wieczne + subskrypcyjne
Produkty wymagane do pełnego pokrycia3+1

Szczegółowe porównanie funkcji

FunkcjaDynamsoft Label RecognizerIronOCR
Zakres rozpoznawania
Ogólne OCR dokumentówNieobsługiwaneTak
Rozpoznawanie MRZSpecjalistyczneTak (ReadPassport)
Rozpoznawanie numerów VINSpecjalistyczneTak (za pomocą standardowego OCR)
Odczytywanie etykiet przemysłowychSpecjalistyczneTak
Rozpoznawanie pisma ręcznegoNieobsługiwaneTak
Wyodrębnianie tabelNieobsługiwaneTak
Formaty danych wejściowych
Pliki graficzne (JPG, PNG, TIFF)TakTak
PDF (natywny)NieobsługiwaneTak
Plik PDF chroniony hasłemNieobsługiwaneTak
Tablica bajtów / strumieńTakTak
Dokumenty wielostronicoweRęczne agregowanieTak (język ojczysty)
Formaty wyjściowe
Zwykły tekstTak (nieprzetworzone linie)Tak
Pola ustrukturyzowane (przetworzone)Brak danychTak (strony, wiersze, WORDy)
PDF z funkcją wyszukiwaniaNieobsługiwaneTak
hOCRNieobsługiwaneTak
Wyniki pewnościZa wierszZa słowo, wiersz i stronę
Przetwarzanie wstępne
Automatyczne przetwarzanie wstępnePodstawoweTak (inteligentny potok)
Korekcja pochylenia / obrotuOgraniczoneTak
Usuwanie szumówOgraniczoneTak
Wzmocnienie kontrastuOgraniczoneTak
Normalizacja DPIBrak danychTak
Możliwości integracji
Odczytywanie BarCodeOddzielny produktWbudowane
Normalizacja dokumentuOddzielny produktNie jest wymagane
OCR oparte na regionieTak (za pomocą szablonów)Tak (CropRectangle)
Przetwarzanie równoległe bezpieczne dla wątkówTakTak
Platforma i wdrożenie
WindowsTakTak
LinuxTakTak
macOSTakTak
DockerTakTak
Azure / AWSTakTak
Srodowiska odizolowane / OfflineTakTak
Licencjonowanie i koszty
Roczna subskrypcjaTak (skontaktuj się z Dynamsoft w sprawie stawek)Opcjonalnie
Licencja wieczystaNiedostępneTak ($999 jeden raz)
Jeden pakiet zawierający wszystkie funkcjeNie (3+ produkty)Tak
Bezpłatna wersja próbna30 dniTak

Zakres specjalistyczny a ogólny

Najważniejszą decyzją architektoniczną podjętą przez firmę Dynamsoft jest stworzenie rozwiązania specjalistycznego, a nie ogólnego. Decyzja ta ma bezpośrednie konsekwencje dla każdej aplikacji, która zaczyna od odczytu MRZ lub etykiet, ale ostatecznie wymaga czegoś więcej.

Podejście firmy Dynamsoft

Dynamsoft Label Recognizer obsługuje dokładnie to, co opisują jego szablony JSON, i nic poza tym. Aplikacja do przetwarzania paszportów zbudowana na platformie Dynamsoft wymaga trzech produktów, zanim będzie mogła obsługiwać rzeczywisty przepływ dokumentów:

// Dynamsoft passport processing — MULTIPLE PRODUCTS REQUIRED

using Dynamsoft.DLR;  // Label Recognizer — for MRZ (annual subscription)
using Dynamsoft.DBR;  // Barcode Reader — for any barcodes (additional license)
// Plus: a separate OCR library — for full page text (more budget)

public class DynamsoftPassportProcessor : IDisposable
{
    private readonly LabelRecognizer _mrzRecognizer;
    private readonly BarcodeReader _barcodeReader;
    // private readonly SomeOtherOcrLibrary _fullTextOcr;  // third product

    public DynamsoftPassportProcessor(
        string mrzLicenseKey,
        string barcodeLicenseKey)
    {
        // License each product independently
        LabelRecognizer.InitLicense(mrzLicenseKey);
        _mrzRecognizer = new LabelRecognizer();

        // Configure MRZ template — JSON required before any recognition
        string mrzTemplate = @"{
            ""LabelRecognizerParameterArray"": [{
                ""Name"": ""MRZ_Passport"",
                ""ReferenceRegionNameArray"": [""FullImage""],
                ""CharacterModelName"": ""MRZ""
            }]
        }";
        _mrzRecognizer.AppendSettingsFromString(mrzTemplate);

        // Second product, second license key
        BarcodeReader.InitLicense(barcodeLicenseKey);
        _barcodeReader = new BarcodeReader();
    }

    public PassportResult ProcessPassport(string imagePath)
    {
        // Step 1: Wyodrębnianie MRZ — raw text only, no field parsing
        var mrzResults = _mrzRecognizer.RecognizeFile(imagePath);
        var mrzText = new StringBuilder();
        foreach (var r in mrzResults)
            foreach (var line in r.LineResults)
                mrzText.AppendLine(line.Text);

        // Step 2: Parse MRZ manually — your 150-line TD3 parser here
        var parsedMrz = ParseMrzManually(mrzText.ToString());

        // Step 3: Barcodes — second product, second API
        var barcodeResults = _barcodeReader.DecodeFile(imagePath);

        // Step 4: Full page text — THIRD library, no Dynamsoft option
        // var fullText = _fullTextOcr.ReadImage(imagePath);

        return new PassportResult
        {
            ParsedMrz = parsedMrz,
            Barcodes = barcodeResults.Select(b => b.BarcodeText).ToList(),
            FullPageText = null  // requires a fourth product
        };
    }

    public void Dispose()
    {
        _mrzRecognizer?.Dispose();
        _barcodeReader?.Dispose();
    }
}
C#

Powyższy kod nadal nie obsługuje danych wejściowych w formacie PDF. Jeśli skan paszportu zostanie dostarczony w formacie PDF zamiast JPEG, przed uruchomieniem jakiegokolwiek kodu należy dodać bibliotekę do renderowania plików PDF. Całkowita integracja dla rzeczywistego przepływu pracy: cztery produkty, cztery klucze licencyjne, cztery powierzchnie konserwacyjne.

Podejście IronOCR

IronOCR obsługuje ten sam proces przetwarzania paszportów — analizę MRZ, OCR całej strony, BARCODE i dane wejściowe w formacie PDF — w ramach jednego pakietu:

using IronOcr;

public class IronOcrPassportProcessor
{
    private readonly IronTesseract _ocr;

    public IronOcrPassportProcessor()
    {
        _ocr = new IronTesseract();
        _ocr.Configuration.ReadBarCodes = true;  // barcodes included
    }

    public CompletePassportResult ProcessPassport(string imagePath)
    {
        // Structured MRZ fields — no manual parsing required
        var mrzData = _ocr.ReadPassport(imagePath);

        // Full page OCR + barcodes in the same call
        var fullResult = _ocr.Read(imagePath);

        return new CompletePassportResult
        {
            // MRZ fields are already parsed properties
            DocumentType    = mrzData.DocumentType,
            IssuingCountry  = mrzData.IssuingCountry,
            Surname         = mrzData.Surname,
            GivenNames      = mrzData.GivenNames,
            PassportNumber  = mrzData.DocumentNumber,
            Nationality     = mrzData.Nationality,
            DateOfBirth     = mrzData.DateOfBirth,
            ExpiryDate      = mrzData.ExpiryDate,
            RawMrz          = mrzData.MRZ,

            // Full page text from same package
            FullPageText    = fullResult.Text,

            // Barcodes alongside text — no separate product
            Barcodes        = fullResult.Barcodes.Select(b => b.Value).ToList(),

            Confidence      = fullResult.Confidence
        };
    }
}

Jeden pakiet, jeden klucz licencyjny, jedno API. W przypadku przewodnika po odczytywaniu paszportów i funkcji odczytu BARCODE dokumentacja IronOCR obejmuje oba te elementy w tym samym kontekście produktowym, ponieważ są to ten sam produkt.

Koszt i złożoność wielu produktów

Najwyraźniej różnice w modelach kosztowych widać na przykładzie skanera magazynowego. System musi odczytywać etykiety produktów (tekst), skanować kody kreskowe (QR/EAN) oraz przetwarzać załączone pliki PDF dotyczące przesyłek. W przypadku Dynamsoft są to trzy oddzielnie licencjonowane produkty z odrębnymi wzorcami inicjalizacji.

Podejście firmy Dynamsoft

// Dynamsoft warehouse scanner — THREE products, THREE license keys

using Dynamsoft.DLR;  // Label Recognizer — product labels
using Dynamsoft.DBR;  // Barcode Reader — product barcodes
using Dynamsoft.DDN;  // Document Normalizer — document edge detection

public class DynamsoftWarehouseScanner : IDisposable
{
    private readonly LabelRecognizer _labelRecognizer;
    private readonly BarcodeReader _barcodeReader;
    private readonly DocumentNormalizer _documentNormalizer;

    public DynamsoftWarehouseScanner(
        string labelLicenseKey,
        string barcodeLicenseKey,
        string documentLicenseKey)
    {
        LabelRecognizer.InitLicense(labelLicenseKey);
        _labelRecognizer = new LabelRecognizer();

        BarcodeReader.InitLicense(barcodeLicenseKey);
        _barcodeReader = new BarcodeReader();

        DocumentNormalizer.InitLicense(documentLicenseKey);
        _documentNormalizer = new DocumentNormalizer();
    }

    public WarehouseItemResult ScanItem(string imagePath)
    {
        // Three separate API calls, three result types to aggregate manually
        var labelResults   = _labelRecognizer.RecognizeFile(imagePath);
        var barcodeResults = _barcodeReader.DecodeFile(imagePath);
        var docResults     = _documentNormalizer.Normalize(imagePath);

        // Merge three result sets into one model — your code
        return AggregateResults(labelResults, barcodeResults, docResults);
    }

    public void Dispose()
    {
        _labelRecognizer?.Dispose();
        _barcodeReader?.Dispose();
        _documentNormalizer?.Dispose();
    }
}

Pliki PDF z wysyłkami nadal wymagają czwartego produktu — Dynamsoft nie posiada natywnego OCR dla plików PDF. Roczna licencja na trzy produkty Dynamsoft w pakiecie na serwer: 5997 USD+/rok. Dodaj bibliotekę PDF, a koszt wyniesie ponad 6300 USD rocznie, zanim napisano by choćby jedną linię kodu logiki biznesowej.

Podejście IronOCR

using IronOcr;

public class IronOcrWarehouseScanner
{
    private readonly IronTesseract _ocr;

    public IronOcrWarehouseScanner()
    {
        _ocr = new IronTesseract();
        _ocr.Configuration.ReadBarCodes = true;  // barcodes in same pass
    }

    public WarehouseItemResult ScanItem(string imagePath)
    {
        // One call: text + barcodes + structured word positions
        var result = _ocr.Read(imagePath);

        return new WarehouseItemResult
        {
            AllText    = result.Text,
            Barcodes   = result.Barcodes.Select(b => new BarcodeInfo
                         { Format = b.Format.ToString(), Value = b.Value }).ToList(),
            Confidence = result.Confidence
        };
    }

    public string ScanLabelRegion(string imagePath, int x, int y, int width, int height)
    {
        // Target a specific label area — no template JSON required
        var region = new CropRectangle(x, y, width, height);
        using var input = new OcrInput();
        input.LoadImage(imagePath, region);
        input.Deskew();
        input.Contrast();

        return _ocr.Read(input).Text;
    }

    public string ProcessShipmentPdf(string pdfPath)
    {
        // Native PDF — no external library, no page conversion loop
        return _ocr.Read(pdfPath).Text;
    }
}

W przypadku dokumentacji dotyczącej OCR opartego na regionach oraz przewodnika po wprowadzaniu danych z plików PDF,IronOCR obsługuje oba te obszary bez konieczności stosowania dodatkowych produktów.

Model wdrożenia

Obie biblioteki działają lokalnie, bez przesyłania danych dokumentów do chmury. Kluczowe różnice w wdrażaniu dotyczą wzorców inicjalizacji, zarządzania plikami konfiguracyjnymi oraz tego, co każda biblioteka zawiera w swoim artefakcie wdrożeniowym.

Podejście firmy Dynamsoft

Dynamsoft wymaga statycznych wywołań inicjalizacyjnych klasy SDK przed utworzeniem jakiejkolwiek instancji. Każdy produkt ma swój własny wzorzec inicjalizacji, a klucz licencyjny aktywuje wyłącznie ten konkretny produkt. Pliki konfiguracji szablonu — dokumenty ustawień JSON dla MRZ, VIN lub niestandardowych wzorców etykiet — muszą być obecne i poprawnie odwołane w czasie działania. Wdrożenie, które obejmuje Label Recognizer i Barcode Reader, zarządza dwiema ścieżkami aktywacji, dwoma zestawami szablonów i dwoma łańcuchami Dispose.

W przypadku wdrożeń w magazynach lub kioskach zależność od pliku konfiguracyjnego powoduje dodanie artefaktu wdrożeniowego poza plikami binarnymi. Szablony JSON są oddzielnymi plikami, nie są skompilowane w pakiecie. Niepoprawne skonfigurowanie ścieżki szablonu na nowym serwerze i rozpoznanie zwróci puste wyniki lub wyrzuci błąd w czasie rzeczywistym podczas wywołania AppendSettingsFromString.

Podejście IronOCR

IronOCR jest wdrażany jako pojedynczy pakiet NuGet. Aktywacja licencji to przypisanie ciągu znaków w jednym wierszu:

// Application startup — one line, works for all features
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");

Brak plików szablonów. Brak natywnego zarządzania plikami binarnymi. Brak folderu tessdata. Przewodnik wdrażania Docker wymaga jedynie libgdiplus na Linuxie — jednej linii apt-get install w Dockerfile.

FROM mcr.microsoft.com/dotnet/aspnet:8.0
RUN apt-get update && apt-get install -y libgdiplus
COPY --from=build /app/publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

Ten sam pakiet obsługuje systemy Linux, AWS Lambda i Azure App Service bez konieczności konfiguracji specyficznej dla danej platformy. W przypadku zespołów korzystających z potoków CI/CD nie ma plików szablonów, które wymagałyby oddzielnej kontroli wersji lub wdrażania artefaktów.

Przewodnik po mapowaniu API

Dynamsoft Label RecognizerOdpowiednik IronOCR
LabelRecognizer.InitLicense(key)IronOcr.License.LicenseKey = key
new LabelRecognizer()new IronTesseract()
_recognizer.AppendSettingsFromString(json)Nie jest wymagane — silnik skonfigurowany automatycznie
_recognizer.RecognizeFile(path)ocr.Read(path)
_recognizer.RecognizeByFile(path, "")ocr.Read(path)
result.LineResults[i].Textresult.Lines[i].Text
Ręczny parser TD3 MRZ (ponad 150 wierszy)ocr.ReadPassport(path).Surname itd.
BarcodeReader.InitLicense(key) (oddzielny produkt)ocr.Configuration.ReadBarCodes = true
_barcodeReader.DecodeFile(path)result.Barcodes (to samo wywołanie co OCR)
barcode.BarcodeFormatStringbarcode.Format.ToString()
barcode.BarcodeTextbarcode.Value
DocumentNormalizer.InitLicense(key) (oddzielny produkt)Nie jest wymagane
Brak obsługi plików PDFocr.Read("document.pdf")
Brak możliwości wyszukiwania w pliku PDFresult.SaveAsSearchablePdf(path)
recognizer.Dispose()using var ocr = new IronTesseract()

Kiedy zespoły rozważają przejście z Dynamsoft na IronOCR

Zakres zastosowania wykracza poza MRZ lub etykiety

Większość migracji ma miejsce, gdy projekt zaczyna się w wąskim zakresie — "tylko odczyt MRZ paszportu" — a następnie pojawiają się wymagania produktowe. Klient chce archiwizować zeskanowane paszporty jako pliki PDF z możliwością wyszukiwania. Zespół ds. zgodności chce przeprowadzić OCR na stemplach wizowych. W kolejce zgłoszeń do pomocy technicznej znajdują się zgłoszenia dotyczące plików PDF, których Dynamsoft nie może przetworzyć. W tej chwili zespół korzysta z Dynamsoft do MRZ oraz z drugiej biblioteki OCR do wszystkiego innego. Dwie umowy licencyjne, dwa ścieżki konserwacji, dwa wzorce API w tej samej bazie kodu.IronOCR obsługuje pierwotny wymóg MRZ przez ReadPassport() oraz rozszerzone wymagania przez ten sam egzemplarz IronTesseract. Zespoły przechodzące z systemu opartego na dwóch bibliotekach na jeden pakiet zazwyczaj odnotowują 30–40% redukcję kodu warstwy integracyjnej.

Roczne koszty subskrypcji są nie do utrzymania

Koszty licencji wieloproduktowej Dynamsoftu rosną corocznie. Skontaktuj się z Dynamsoftem, aby uzyskać aktualne ceny. Na przestrzeni wielu lat, łączne opłaty za subskrypcje roczne na wiele produktów mogą znacznie przekroczyć koszt jednorazowy $999 IronOCR. Model licencjonowania wieczystego ma największe znaczenie dla produktów z określoną żywotnością komercyjną — system przetwarzania dokumentów rządowych, który będzie działał przez siedem lat, nie chce mieć zależności rocznego odnawiania od specjalistycznego dostawcy dla kluczowego komponentu.

Wymagane jest wprowadzenie pliku PDF

Dynamsoft Label Recognizer nie obsługuje natywnie formatu PDF. Każdy dokument dostarczony w formacie PDF wymaga etapu przetwarzania wstępnego: renderowania każdej strony do obrazu, przesłania obrazu przez Dynamsoft, zebrania i ponownego złożenia wyników. Ten potok dodaje zależność od renderowania PDF, pętlę iteracji stron oraz problem mapowania współrzędnych, jeśli konieczne jest skorelowanie wyników rozpoznawania z oryginalną geometrią pliku PDF.IronOCR natywnie czyta PDF-y — ocr.Read("passport-scans.pdf") przetwarza każdą stronę, a result.Pages daje dostęp do tekstu, słów i ocen pewności na każdej stronie. W przypadku zespołów, w których 20% lub więcej danych wejściowych ma formę plików PDF, rozwiązanie firmy Dynamsoft powoduje znaczne obciążenie związane z konserwacją przy każdej aktualizacji biblioteki renderującej pliki PDF.

Koszt integracji wielu produktów jest zbyt wysoki

Każdy dodatkowy produkt Dynamsoft to oddzielne wywołanie inicjalizacji statycznej, oddzielny łańcuch Dispose i oddzielny plik konfiguracji JSON do zarządzania. Zespoły, które zintegrowały trzy produkty Dynamsoft, twierdzą, że głównym kosztem utrzymania jest powierzchnia integracji — a nie jakość rozpoznawania. Rotacja kluczy licencyjnych, aktualizacje wersji SDK oraz wdrażanie plików szablonów muszą być koordynowane jednocześnie we wszystkich trzech produktach. Model pojedynczego pakietu IronOCR oznacza jedną wersję do aktualizacji, jeden klucz licencyjny do rotacji i jeden interfejs API do utrzymania, niezależnie od tego, z ilu funkcji OCR korzysta aplikacja.

Potrzebne są międzynarodowe typy dokumentów

Dynamsoft Label Recognizer opiera się na formatach MRZ z alfabetem łacińskim zgodnie z dokumentem ICAO Doc 9303. Aplikacje przetwarzające dokumenty tożsamości w językach CJK, paszporty z alfabetem arabskim lub wielojęzyczne etykiety wysyłkowe szybko osiągają limity obsługi języków.IronOCR oferuje ponad 125 pakietów językowych w postaci pojedynczych pakietów NuGet — arabski, chiński uproszczony, chiński tradycyjny, japoński, koreański i inne. Każdy instalowany przez dotnet add package IronOcr.Languages.Arabic bez zmiany kodu rozpoznania. Przewodnik dotyczący wielu języków opisuje funkcję jednoczesnego rozpoznawania wielu języków za pomocą kilku wierszy konfiguracji.

Typowe kwestie związane z migracją

Zastąpienie parsera MRZ

Najbardziej bezpośrednim krokiem migracyjnym jest zastąpienie połączenia Dynamsoft RecognizeFile + ręczny parser TD3 przez ReadPassport. Ścieżka ekstrakcji Dynamsoft zwraca surowy tekst jak P<GBRSMITH<<JOHN<<<<<<<<<<<<<<<<<<<<<<<<<< i wymaga ponad 150 linii parsowania przesunięcia znaków dla formatu TD3. Zastępstwo dla IronOCR:

// Before: Dynamsoft raw extraction + manual 150-line parser
var results = _recognizer.RecognizeFile(imagePath);
var rawMrz = string.Join("\n", results.SelectMany(r => r.LineResults).Select(l => l.Text));
var parsed = MyTd3Parser.Parse(rawMrz);  // delete this file

// After:IronOCR parsed output directly
var passportData = new IronTesseract().ReadPassport(imagePath);
string surname  = passportData.Surname;
string docNum   = passportData.DocumentNumber;
DateTime? dob   = passportData.DateOfBirth;
C#

Ręczny parser został całkowicie usunięty. Wykrywanie formatu TD1 (karty ID), TD2 (wizy) i TD3 (paszporty) jest automatyczne wewnątrz ReadPassport. Instrukcja obsługi Passport opisuje każdy zwracany pole.

Konsolidacja inicjalizacji wielu produktów

Wieloproduktowe aplikacje Dynamsoft mają wiele statycznych wywołań InitLicense przy starcie, z których każde wymaga własnego klucza. Połącz je w jedną linię licencji IronOCR i usuń bloki inicjalizacji dla poszczególnych produktów:

// Before: three static initializations
LabelRecognizer.InitLicense(mrzKey);
BarcodeReader.InitLicense(barcodeKey);
DocumentNormalizer.InitLicense(documentKey);

// After: one line, all capabilities enabled
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // barcodes included automatically

Istniejące wywołania Dispose Dynamsoft w klasach usług należy zastąpić standardowymi blokami using na egzemplarzach IronTesseract, lub pojedynczym, ponownie używanym egzemplarzem zarejestrowanym w kontenerze DI. Podręcznik konfiguracji IronTesseract obejmuje oba wzorce.

Dodanie obsługi plików PDF

Najczęstszą nową funkcją, jaką zespoły zyskują podczas migracji, jest natywne wprowadzanie danych z plików PDF — coś, czego Dynamsoft nigdy nie zapewniał. Po usunięciu pętli konwersji plików PDF na obrazy, natywny odczyt plików PDF nie wymaga żadnych zmian w kodzie poza ścieżką wejściową:

// Before: PDF rendering loop (50+ lines with external library)
var pdfDoc = PdfDocument.Load(pdfPath);
foreach (var page in pdfDoc.Pages)
{
    var bitmap = page.RenderAsBitmap(150);
    var results = _labelRecognizer.RecognizeFile(SaveBitmapToTemp(bitmap));
    // aggregate...
}

// After: native PDF — no loop, no external library
var result = new IronTesseract().Read(pdfPath);
string fullText = result.Text;
result.SaveAsSearchablePdf("searchable-output.pdf");

Dla zespołów, które muszą również tworzyć przeszukiwalne archiwa PDF z zeskanowanych danych wejściowych, SaveAsSearchablePdf jest jednorazowym wywołaniem metody. W instrukcji w formacie PDF z funkcją wyszukiwania szczegółowo opisano opcje wyjściowe.

Przetwarzanie wstępne zapewniające jakość etykiet przemysłowych

Silnik szablonów firmy Dynamsoft jest zoptymalizowany pod kątem kontrolowanych warunków etykiet. W przypadku obrazów o niskiej jakości — zużytych etykiet, opakowań o niskim kontraście, przekrzywionych skanów przemysłowych — proces przetwarzania wstępnego IronOCR wypełnia tę lukę. Przewodnik po korekcji jakości obrazu obejmuje każdy filtr. Dla przepływów pracy specyficznych dla etykiet, najprzydatniejsze są Deskew i Contrast:

using var input = new OcrInput();
input.LoadImage(labelImagePath);
input.Deskew();    // correct rotation from handheld scanner
input.Contrast();  // recover faded label text
input.DeNoise();   // remove packaging texture interference

var labelText = new IronTesseract().Read(input).Text;
Console.WriteLine($"Confidence: {new IronTesseract().Read(input).Confidence}%");

Dodatkowe możliwości IronOCR

Funkcje nieomówione w powyższych sekcjach, z których zespoły często korzystają po migracji:

  • Rozpoznawanie pisma ręcznego: przetwarzanie odręcznych notatek i adnotacji wraz z tekstem drukowanym — funkcja, której Dynamsoft nie oferuje
  • Przetwarzanie zeskanowanych dokumentów: wielostronicowe zeskanowane pliki PDF z automatycznym przetwarzaniem wstępnym każdej strony
  • Wyodrębnianie tabel: wykrywanie i wyodrębnianie danych tabelarycznych z faktur, manifestów i arkuszy danych
  • Eksport hOCR: Eksportuj wyniki rozpoznawania jako HTML wraz ze współrzędnymi ramki ograniczającej do dalszej analizy układu
  • Async OCR: Rozpoznawanie bez blokowania dla ASP.NET i aplikacji serwerowych o dużej przepustowości
  • Śledzenie postępów: monitorowanie wielostronicowych zadań wsadowych za pomocą wywołań zwrotnych dotyczących postępu
  • Indeks ponad 125 języków: Pełna lista obsługiwanych pakietów NuGet w różnych językach, w tym alfabetów niełacińskich
  • Odczyt MICR/czeków: rozpoznawanie znaków atramentem magnetycznym do przetwarzania dokumentów finansowych — kolejny specjalistyczny przypadek użycia obsługiwany w jednym pakiecie
  • Wyniki pewności dla poszczególnych WORD-ów: szczegółowe wskaźniki jakości dla automatycznych procesów weryfikacji dokumentów

Zgodność z platformą .NET i gotowość na przyszłość

IronOCR obsługuje przede wszystkim środowiska uruchomieniowe .NET 8 i .NET 9, zachowując pełną kompatybilność wsteczną z .NET Framework 4.6.2 i .NET Core 3.1. Biblioteka jest dostarczana jako pojedynczy pakiet NuGet, który automatycznie dobiera odpowiedni plik binarny dla platformWindowsx64,Windowsx86,Linuxx64,macOSx64 imacOSARM za pomocą grafu identyfikatorów środowisk uruchomieniowych NuGet — bez warunkowych odwołań do pakietów i bez plików projektowych specyficznych dla danej platformy.Dynamsoft Label Recognizerrównież obsługuje nowoczesne środowiska uruchomieniowe .NET, ale jego model wieloproduktowy oznacza, że zgodność każdego produktu z .NET musi być weryfikowana i aktualizowana niezależnie. Aktywne tempo rozwoju IronOCR zapewnia aktualizacje pakietu NuGet dostosowane do każdego cyklu wydawniczego .NET, a model pojedynczego pakietu oznacza, że zgodność z .NET 10, spodziewana pod koniec 2026 r., będzie miała zastosowanie jednolicie do wszystkich funkcji bez konieczności śledzenia poszczególnych produktów.

Wnioski

Dynamsoft Label Recognizer to specjalista o wysokich umiejętnościach technicznych. W przypadku kiosku, który przetwarza wyłącznie strefę MRZ paszportów, lub stanowiska na linii montażowej, które odczytuje wyłącznie kody VIN, jego silnik rozpoznawania oparty na szablonach niezawodnie wykonuje to wąskie zadanie. Problem polega na tym, że rzeczywiste zastosowania rzadko ograniczają się do wąskiego zakresu. W przypadku paszportów należy przeprowadzić OCR pełnych stron danych. Etykiety wysyłkowe są dostarczane w formacie PDF. Systemy magazynowe wymagają przetwarzania BARCODE-ów i tekstu w jednym przebiegu. Każde rozszerzenie zakresu wymaga kolejnego produktu Dynamsoft, kolejnej rocznej licencji i kolejnego interfejsu API do utrzymania.

Model kosztowy sprawia, że jest to konkretne. Wieloletnie sumy za MRZ plus odczyt kodów kreskowych w całym zespole deweloperskim korzystającym z modelu rocznej subskrypcji Dynamsoftu kumulują się znacząco.IronOCR obejmuje obie możliwości — plus natywne PDF, przeszukiwalne wyjście PDF, pełne OCR dokumentu, ponad 125 języków i przetwarzanie wstępne — przy jednorazowym $999. Sama migracja jest w dużej mierze mechaniczna: zastąp RecognizeFile przez ocr.Read, usuń ręczny parser MRZ TD3, włącz ReadBarCodes = true i usuń zewnętrzną pętlę renderowania PDF.

Różnica w architekturze nie polega wyłącznie na kosztach. Projekt Dynamsoft zmusza zespoły do myślenia w kategoriach produktów, a nie możliwości — do zadawania pytania "który produkt Dynamsoft sobie z tym poradzi?" przed napisaniem jakiegokolwiek kodu. Projekt IronOCR odwraca tę zasadę: jedna instancja, jedna konfiguracja, jeden obiekt wynikowy, niezależnie od zawartości dokumentu. Różnica ta kumuluje się w trakcie trwania projektu wraz ze wzrostem wymagań.

Dla zespołów tworzących aplikacje od podstaw, które wymagają dowolnej kombinacji rozpoznawania MRZ, odczytu BarCode, ogólnego OCR dokumentów lub przetwarzania plików PDF, model "wszystko w jednym"IronOCR eliminuje problem koordynacji wielu produktów już na samym początku. Dla zespołów korzystających obecnie z wielu produktów Dynamsoft wraz z oddzielną biblioteką OCR ścieżka migracji konsoliduje ten obszar do jednej zależności. Centrum dokumentacji IronOCR obejmuje wszystkie omówione tutaj funkcje wraz z działającymi przykładami kodu i przewodnikami wdrożeniowymi.

Zwróć uwagę: Dynamsoft i Tesseract są zarejestrowanymi znakami towarowymi odpowiednich właścicieli. Ta strona nie jest powiązana z, zatwierdzona przez, ani sponsorowana przez Dynamsoft ani Google. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta