Jak odczytywać obrazy pisma ręcznego za pomocą IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR zapewnia specjalizowaną metodę ReadHandwriting, która niezawodnie cyfryzuje tekst odręczny z obrazów, osiągając około 90% dokładności dla angielskiego pisma ręcznego, mimo wrodzonych wyzwań związanych z nieregularnym odstępowaniem i różnicami w kreskach.

Szybki start: Odczytywanie obrazów pisma ręcznego za pomocą IronOCR

  1. Zainstaluj IronOCR oraz pakiet IronOcr.Extensions.AdvancedScan
  2. Utwórz instancję IronTesseract
  3. Wczytaj obraz swojego pisma odręcznego przy użyciu LoadImage()
  4. Wywołaj metodę ReadHandwriting()
  5. Uzyskaj dostęp do wyodrębnionego tekstu z OcrResult
  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    using IronOcr;
    
    var ocrTesseract = new IronTesseract();
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage("handwriting.png");
    var ocrResult = ocrTesseract.ReadHandwriting(ocrInput);
    Console.WriteLine(ocrResult.Text);
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Automatyczne odczytywanie tekstu pisanego odręcznie z obrazów jest niezwykle trudne, ponieważ ludzie piszą w różny sposób. Ta ogromna niespójność sprawia, że OCR jest trudnym zadaniem. Kluczowe dokumenty, takie jak stare rejestry, formularze przyjęcia pacjentów i ankiety klientów, nadal wymagają ręcznego przetwarzania, co prowadzi do podatnych na błędy procesów, które zagrażają integralności danych.

IronOCR rozwiązuje ten problem, wprowadzając specjalistyczną metodę niezawodnego rozpoznawania i digitalizacji obrazów pisma ręcznego. Oparty na potężnym silniku Tesseract 5, IronOCR łączy zaawansowane przetwarzanie obrazu z uczeniem maszynowym, zapewniając wiodące w branży możliwości rozpoznawania pisma ręcznego.

Ten przewodnik krok po kroku przeprowadzi Cię przez proces wdrażania OCR pisma ręcznego w aplikacjach .NET. Niezależnie od tego, czy digitalizujesz dokumenty historyczne, przetwarzasz formularze medyczne, czy konwertujesz odręczne notatki, dowiesz się, jak osiągnąć wiarygodne wyniki dzięki IronOCR.

Rozpocznij pracę z IronOCR


Aby skorzystać z tej funkcji, należy najpierw zainstalować pakiet IronOcr.Extensions.AdvancedScan. Proszę zwrócić uwagę, że metoda ReadHandwriting obecnie obsługuje tylko język angielski. Dla OCR w wielu językach, użyj standardowej metody Read() z odpowiednimi pakietami językowymi.

Jak odczytywać obrazy pisma ręcznego za pomocą IronOCR?

Odczytanie obrazu pisma ręcznego za pomocą IronOCR jest proste. Najpierw zainicjuj silnik OCR, następnie wczytaj obraz za pomocą LoadImage, a na końcu użyj specjalizowanej metody ReadHandwriting zaprojektowanej do rozpoznawania pisma ręcznego. Wydrukuj wyodrębniony tekst, aby zweryfikować jego dokładność i treść.

Przed przetworzeniem warto rozważyć zastosowanie filtrów poprawiających jakość obrazu, aby zwiększyć czytelność. Filtry te mogą znacznie poprawić dokładność rozpoznawania, zwłaszcza w przypadku zeskanowanych dokumentów o słabym kontraście lub niskiej rozdzielczości.

Jakiego formatu pliku użyć?

Przykładowy obraz wprowadzania pisma ręcznego przedstawiający tekst pisany kursywą do przetwarzania OCR
:path=/static-assets/ocr/content-code-examples/how-to/read-handwritten-image.cs
using IronOcr;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

// Load handwriting image
var inputHandWriting = new OcrInput();
inputHandWriting.LoadImage("handwritten.png");

// Perform OCR on the handwriting image
OcrHandwritingResult result = ocr.ReadHandwriting(inputHandWriting);

// Output the recognized handwritten text
Console.WriteLine(result.Text);
// Output the confidence score of the OCR result
Console.WriteLine(result.Confidence);
Imports IronOcr
Imports System

' Instantiate OCR engine
Dim ocr As New IronTesseract()

' Load handwriting image
Dim inputHandWriting As New OcrInput()
inputHandWriting.LoadImage("handwritten.png")

' Perform OCR on the handwriting image
Dim result As OcrHandwritingResult = ocr.ReadHandwriting(inputHandWriting)

' Output the recognized handwritten text
Console.WriteLine(result.Text)
' Output the confidence score of the OCR result
Console.WriteLine(result.Confidence)
$vbLabelText   $csharpLabel

Jakich rezultatów mogę się spodziewać?

Wyniki OCR pokazujące wyodrębniony tekst odręczny wraz z wynikiem pewności

Metoda ReadHandwriting osiągnęła 90,6% pewności, poprawnie identyfikując większość tekstu, w tym początkową frazę "My name is Erin Fish."

Ten doskonały wynik pokazuje możliwości IronOCR w zakresie trudnych tekstów pisanych odręcznie. Chociaż silnik miał trudności z odstępami i połączonymi literami, udało mu się wydobyć sedno przekazu. To pokazuje, że IronOCR skutecznie radzi sobie ze złożonymi, niestandardowymi tekstami.

Osoby, które dopiero zaczynają przygodę z OCR, powinny zapoznać się z naszym prostym samouczkiem dotyczącym OCR, aby zrozumieć podstawy przed przystąpieniem do rozpoznawania pisma ręcznego.

Jak korzystać z wersji asynchronicznej?

IronOCR obsługuje asynchroniczną wersję: ReadHandwritingAsync. Jest to przydatne w przypadku kodu asynchronicznego, który wymaga pobrania obrazów wejściowych przed przetworzeniem. Dokumentacja dotycząca obsługi asynchronicznej zawiera wyczerpujące wskazówki dotyczące wdrażania asynchronicznych operacji OCR.

Korzystając z tych samych danych wejściowych, oto jak użyć metody async:

:path=/static-assets/ocr/content-code-examples/how-to/read-handwritten-image-async.cs
using IronOcr;
using System;
using System.Threading.Tasks;

using System;
using System.Threading.Tasks;
#endregion

public class read_handwritten_image_async
{
    public async Task codeAsync()
    {
        // Instantiate OCR engine
        var ocr = new IronTesseract();

        // Load handwriting image
        var inputHandWriting = new OcrInput();
        inputHandWriting.LoadImage("handwritten.png");

        // Perform OCR using the async method with 'await'.
        // The compiler automatically infers this top-level code block as an 'async Task Main()' method.
        OcrHandwritingResult result = await ocr.ReadHandwritingAsync(inputHandWriting);

        // Output the recognized handwriting text
        Console.WriteLine(result.Text);
        // Output the confidence score of the OCR result
        Console.WriteLine(result.Confidence);
    
Imports IronOcr
Imports System
Imports System.Threading.Tasks

Public Class ReadHandwrittenImageAsync
    Public Async Function CodeAsync() As Task
        ' Instantiate OCR engine
        Dim ocr As New IronTesseract()

        ' Load handwriting image
        Dim inputHandWriting As New OcrInput()
        inputHandWriting.LoadImage("handwritten.png")

        ' Perform OCR using the async method with 'Await'.
        ' The compiler automatically infers this top-level code block as an 'async Task Main()' method.
        Dim result As OcrHandwritingResult = Await ocr.ReadHandwritingAsync(inputHandWriting)

        ' Output the recognized handwriting text
        Console.WriteLine(result.Text)
        ' Output the confidence score of the OCR result
        Console.WriteLine(result.Confidence)
    End Function
End Class
$vbLabelText   $csharpLabel

Możesz podać opcjonalny parametr timeoutMs, aby określić milisekundy przed automatycznym anulowaniem. Wartość domyślna to -1, co oznacza brak limitu czasowego—operacja trwa do zakończenia.

Zaawansowane techniki przetwarzania

W przypadku złożonych scenariuszy rozpoznawania pisma ręcznego warto rozważyć następujące zaawansowane techniki:

OCR dostosowane do regionu: Podczas pracy z formularzami lub dokumentami ustrukturyzowanymi należy używać OCR dostosowanego do regionu, aby skupić się na konkretnych obszarach zawierających tekst pisany odręcznie. Takie podejście poprawia dokładność poprzez ograniczenie obszaru przetwarzania:

using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define a specific region for signature area
var signatureRegion = new CropRectangle(x: 100, y: 500, width: 300, height: 100);
ocrInput.LoadImage("form-with-signature.png", signatureRegion);

var signatureResult = ocrTesseract.ReadHandwriting(ocrInput);
Console.WriteLine($"Signature text: {signatureResult.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define a specific region for signature area
var signatureRegion = new CropRectangle(x: 100, y: 500, width: 300, height: 100);
ocrInput.LoadImage("form-with-signature.png", signatureRegion);

var signatureResult = ocrTesseract.ReadHandwriting(ocrInput);
Console.WriteLine($"Signature text: {signatureResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()

    ' Define a specific region for signature area
    Dim signatureRegion As New CropRectangle(x:=100, y:=500, width:=300, height:=100)
    ocrInput.LoadImage("form-with-signature.png", signatureRegion)

    Dim signatureResult = ocrTesseract.ReadHandwriting(ocrInput)
    Console.WriteLine($"Signature text: {signatureResult.Text}")

End Using
$vbLabelText   $csharpLabel

Śledzenie postępów: W przypadku przetwarzania wsadowego wielu dokumentów pisanych odręcznie należy wdrożyć śledzenie postępów w celu monitorowania operacji OCR:

ocrTesseract.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};
ocrTesseract.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};
ocrTesseract.OcrProgress += Sub(sender, e)
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete")
End Sub
$vbLabelText   $csharpLabel

O jakich wyzwaniach powinienem pamiętać?

Chociaż IronOCR osiąga wysoki poziom pewności w zachowaniu ogólnej struktury i tekstu, OCR nadal ma trudności z rozpoznawaniem pisma ręcznego, co prowadzi do lokalnych błędów. Typowe wyzwania wymagają weryfikacji wyodrębnionych wyników:

Nieregularne odstępy: Tekst drukowany ma jednolite odstępy między literami. Odstępy między pociągnięciami pióra i połączeniami liter w piśmie odręcznym są bardzo zróżnicowane. Powoduje to niewłaściwe segmentowanie znaków, jak pokazano, gdy ununiformed rozdziela się na pojedyncze znaki (u n u n i f o c m e d) zamiast jednego słowa.

Różnice w pismie: Każda osoba ma unikalne pismo, a poszczególne osoby piszą tę samą literę za każdym razem inaczej. Połączenia między literami i wzory pisma znacznie się różnią. Uniemożliwia to stosowanie modelu "jednego rozmiaru dla wszystkich", ponieważ silnik musi radzić sobie z dużą zmiennością nachylenia, nacisku i kształtu pociągnięć, co sprawia, że dopasowywanie wzorców jest mniej niezawodne niż w przypadku standardowych czcionek.

Niejasne kształty znaków: Pismo ręczne często używa uproszczonych lub pośpiesznych kresek, tworząc niejasne kształty. Szybko narysowane e może przypominać c, lub połączone l i i mogą być źle zidentyfikowane.

Problemy z jakością i rozdzielczością: Słaba jakość skanu, niska rozdzielczość lub wyblakły tusz mają znaczący wpływ na dokładność rozpoznawania. W przypadku napotkania takich problemów, zapoznaj się z naszym ogólnym przewodnikiem rozwiązywania problemów, aby znaleźć rozwiązania.

Korzystając z tej metody, sprawdź, czy wynik odpowiada zamierzonemu tekstowi źródłowemu, zwracając szczególną uwagę na słowa położone blisko siebie lub nieprawidłowo sformułowane. Rozważ wdrożenie logiki przetwarzania końcowego w celu obsługi typowych błędów rozpoznawania charakterystycznych dla Twojego przypadku użycia.

Ostrzeżenie Metoda ReadHandwriting może osiągnąć jedynie niską dokładność wyodrębniania OCR, jeżeli chodzi o pisma kursywą.

Często Zadawane Pytania

Jakiej dokładności mogę się spodziewać podczas wyodrębniania pisma odręcznego z obrazów?

Metoda ReadHandwriting w IronOCR osiąga około 90% dokładności dla rozpoznawania pisma odręcznego w języku angielskim, mimo wrodzonych wyzwań związanych z nieregularnym rozmieszczeniem i zmiennością pociągnięć, które czynią OCR pisma odręcznego szczególnie trudnym.

Jakie języki są obsługiwane dla rozpoznawania pisma odręcznego?

Metoda ReadHandwriting w IronOCR obecnie obsługuje tylko język angielski. Aby obsłużyć wiele języków, musisz użyć standardowej metody Read() z odpowiednimi pakietami językowymi zamiast specjalistycznej metody pisma odręcznego.

Jaki dodatkowy pakiet muszę zainstalować dla OCR pisma odręcznego?

Aby używać funkcji rozpoznawania pisma odręcznego w IronOCR, musisz zainstalować pakiet IronOcr.Extensions.AdvancedScan oprócz głównej biblioteki IronOCR.

Jak zaimplementować podstawowe rozpoznawanie pisma odręcznego w C#?

Utwórz instancję IronTesseract, załaduj swój obraz pisma odręcznego za pomocą LoadImage(), wywołaj metodę ReadHandwriting() i uzyskaj dostęp do wyodrębnionego tekstu z OcrResult. IronOCR automatycznie obsługuje złożone przetwarzanie obrazów oraz uczenie maszynowe.

Jakie rodzaje dokumentów pisanych odręcznie mogą być przetwarzane?

IronOCR może przetwarzać różnorodne dokumenty pisane odręcznie, w tym historyczne zapisy, formularze przyjęcia pacjentów, ankiety klienta oraz notatki odręczne. Biblioteka jest zaprojektowana tak, aby radzić sobie z niespójnościami w ludzkim piśmie odręcznym, które czynią ręczne przetwarzanie podatnym na błędy.

Jaka technologia napędza możliwości rozpoznawania pisma odręcznego?

Rozpoznawanie pisma odręcznego w IronOCR opiera się na potężnym silniku Tesseract 5, łącząc zaawansowane przetwarzanie obrazów z algorytmami uczenia maszynowego, żeby zapewnić wiodące w branży możliwości rozpoznawania pisma odręcznego.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.