Como Converter Imagem em Texto Manuscrito com IronOCR em C

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

IronOCR fornece um método especializado ReadHandwriting que digitaliza de forma confiável texto manuscrito ao converter imagem em texto, alcançando cerca de 90% de precisão para manuscritos em inglês através de leitura de texto avançada, apesar dos desafios inerentes ao espaçamento irregular e variações de traço.

Início rápido: Leia imagens de escrita à mão com o IronOCR

  1. Instale o IronOCR e o pacote IronOcr.Extensions.AdvancedScan.
  2. Crie uma instância IronTesseract
  3. Carregue sua imagem manuscrita usando LoadImage()
  4. Chame o método ReadHandwriting()
  5. Acesse o texto extraído do OcrResult
  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    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. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Ler automaticamente textos manuscritos a partir de imagens é extremamente difícil porque as pessoas escrevem de maneiras diferentes. Essa enorme inconsistência torna o OCR um desafio. Documentos cruciais, como registros antigos, fichas de cadastro de pacientes e pesquisas de satisfação do cliente, ainda exigem processamento manual, o que leva a fluxos de trabalho propensos a erros e compromete a integridade dos dados.

O IronOCR resolve esse problema introduzindo um método especializado para compreender e digitalizar imagens de escrita à mão de forma confiável. Baseado no poderoso mecanismo Tesseract 5 , o IronOCR combina processamento de imagem avançado com aprendizado de máquina para oferecer recursos de reconhecimento de escrita à mão líderes do setor.

Este guia explica passo a passo como implementar o OCR de escrita à mão em seus aplicativos .NET. Seja para digitalizar documentos históricos, processar formulários médicos ou converter anotações manuscritas, você aprenderá como obter resultados confiáveis ​​com o IronOCR.

Comece a usar o IronOCR


Para usar esta função, você precisa primeiro instalar o pacote IronOcr.Extensions.AdvancedScan . Observe que o método ReadHandwriting atualmente suporta apenas o inglês. Para OCR em vários idiomas, use o método padrão Read() com os pacotes de idioma apropriados.

Como faço para ler imagens de escrita à mão com o IronOCR?

Ler uma imagem de escrita à mão com o IronOCR é muito simples. Primeiro instancie o motor OCR, depois carregue a imagem com LoadImage e, por fim, use o método especializado ReadHandwriting projetado para reconhecimento de escrita à mão. Imprima o texto extraído para verificar a precisão e o conteúdo.

Antes do processamento, considere aplicar filtros de correção de qualidade de imagem para melhorar a legibilidade. Esses filtros podem melhorar significativamente a precisão do reconhecimento, especialmente para documentos digitalizados com baixo contraste ou resolução.

Qual formato de entrada devo usar?

Exemplo de imagem de entrada de escrita à mão mostrando texto cursivo para processamento de 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

Que resultados posso esperar?

Resultados da saída do OCR mostrando o texto manuscrito extraído com a pontuação de confiança.

O método ReadHandwriting obteve uma pontuação de confiança de 90.6%, identificando corretamente a maioria dos textos, incluindo a frase de abertura "My name is Erin Fish."

Este excelente resultado demonstra a capacidade do IronOCR com escritas manuscritas complexas. Embora o mecanismo de busca tenha tido dificuldades com espaçamento e letras conectadas, ele conseguiu extrair a mensagem principal. Isso demonstra que o IronOCR lida com textos complexos e não padronizados de forma eficaz.

Para quem é iniciante em OCR, comece com nosso tutorial simples de OCR para entender os conceitos básicos antes de se aventurar no reconhecimento de escrita à mão.

Como faço para usar a versão assíncrona?

IronOCR suporta uma versão assíncrona: ReadHandwritingAsync. Isso é útil ao lidar com código assíncrono que requer a busca de imagens de entrada antes do processamento. A documentação de suporte assíncrono fornece orientações abrangentes sobre a implementação de operações OCR assíncronas.

Usando a mesma entrada, veja como usar o método assíncrono:

: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

Você pode fornecer um parâmetro timeoutMs opcional para especificar milissegundos antes do cancelamento automático. O valor padrão é -1, significando sem limite de tempo—a operação continua até a conclusão.

Técnicas avançadas de processamento

Para cenários complexos de reconhecimento de escrita manual, considere estas técnicas avançadas:

OCR específico por região : Ao trabalhar com formulários ou documentos estruturados, use o OCR baseado em região para se concentrar em áreas específicas que contenham texto manuscrito. Essa abordagem melhora a precisão ao limitar a área de processamento:

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

Acompanhamento do progresso : Para o processamento em lote de vários documentos manuscritos, implemente o acompanhamento do progresso para monitorar a operação de 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

Quais desafios devo ter em mente?

Embora o IronOCR alcance um alto nível de confiança na retenção da estrutura geral e do texto, o OCR ainda apresenta dificuldades com a escrita à mão, resultando em erros localizados. Os desafios comuns exigem a verificação dos resultados extraídos:

Espaçamento irregular : O texto impresso apresenta espaçamento uniforme entre as letras. O espaçamento entre os traços e as conexões entre as letras na caligrafia varia muito. Isso causa segmentação incorreta de caracteres, conforme mostrado quando ununiformed se divide em caracteres individuais (u n u n i f o c m e d) em vez de uma única palavra.

Variação dos traços : Cada pessoa tem uma caligrafia única, e cada indivíduo escreve a mesma letra de forma diferente. As conexões e os padrões entre as letras variam significativamente. Isso impede um modelo "tamanho único", já que o mecanismo precisa lidar com alta variabilidade na inclinação, pressão e forma do traço, tornando a correspondência de padrões menos confiável do que com fontes padronizadas.

Formas de Caracteres Ambíguos: A caligrafia muitas vezes usa traços simplificados ou apressados, criando formas ambíguas. Um e rapidamente escrito pode se assemelhar a um c, ou l e i conectados podem ser identificados erroneamente.

Problemas de qualidade e resolução : A má qualidade da digitalização, a baixa resolução ou a tinta desbotada afetam significativamente a precisão do reconhecimento. Ao se deparar com esses problemas, consulte nosso guia geral de solução de problemas para obter soluções.

Ao usar esse método, verifique se a saída corresponde à entrada pretendida, prestando atenção especial a palavras muito próximas ou mal formadas. Considere implementar lógica de pós-processamento para lidar com erros de reconhecimento comuns específicos do seu caso de uso.

Aviso O método ReadHandwriting só pode alcançar baixa precisão na extração OCR quando se trata de escritas cursivas.

Perguntas frequentes

Qual o nível de precisão que posso esperar ao extrair texto manuscrito de imagens?

O método ReadHandwriting do IronOCR atinge uma precisão de cerca de 90% no reconhecimento de escrita à mão em inglês, apesar dos desafios inerentes ao espaçamento irregular e às variações de traços que tornam o OCR de escrita à mão particularmente difícil.

Quais idiomas são suportados para reconhecimento de escrita à mão?

O método ReadHandwriting do IronOCR atualmente suporta apenas inglês. Para OCR em vários idiomas, você precisará usar o método Read() padrão com os pacotes de idiomas apropriados em vez do método especializado de reconhecimento de escrita à mão.

Que pacote adicional preciso instalar para o OCR de escrita à mão?

Para usar a funcionalidade de reconhecimento de escrita à mão no IronOCR, você precisa instalar o pacote IronOcr.Extensions.AdvancedScan além da biblioteca principal do IronOCR.

Como posso implementar o reconhecimento básico de escrita à mão em C#?

Crie uma instância do IronTesseract, carregue a imagem da sua escrita à mão usando LoadImage(), chame o método ReadHandwriting() e acesse o texto extraído do OcrResult. O IronOCR lida automaticamente com o processamento complexo de imagens e o aprendizado de máquina.

Que tipos de documentos manuscritos podem ser processados?

O IronOCR consegue processar diversos documentos manuscritos, incluindo registros históricos, fichas de cadastro de pacientes, pesquisas de satisfação do cliente e anotações manuscritas. A biblioteca foi projetada para lidar com as inconsistências da caligrafia humana que tornam o processamento manual propenso a erros.

Que tecnologia possibilita o reconhecimento de escrita manual?

O reconhecimento de escrita à mão do IronOCR é baseado no poderoso mecanismo Tesseract 5, que combina processamento de imagem avançado com algoritmos de aprendizado de máquina para oferecer recursos de reconhecimento de escrita à mão líderes do setor.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,585,834 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.