Skevningskorrigering i bildbehandling är en uppgift för bildoptimering. I datorseende måste vi placera våra kameror och sensorer korrekt, men det leder ofta till stora förvrängningar. På samma sätt, när man skannar med skannrar, är justering ibland nästan omöjlig. På grund av detta har skannade bilder och fotografier en liten snedställning (lutning). I den här artikeln kommer vi att lära oss hur man utför skevningskorrigering i bildbehandling med C#.
Följande ämnen ska behandlas i den här artikeln:
- C# Skew Correction Image Processing API
- Detektera sned bildvinkel
- Automatisk skevningskorrigering
- Automatisk skevningskorrigering med förbehandlingsfilter
- Känn igen bildtext med automatisk skevningskorrigering
- Manuell skevningskorrigering
- Manuell skevningskorrigering med förbehandlingsfilter
C# Skew Correction Image Processing API
För skevningskorrigeringar kommer vi att använda Aspose.OCR for .NET API. API:et gör det möjligt att utföra OCR på skannade bilder, smartphonefoton, skärmdumpar, delar av en bild och skannade PDF-filer. Det gör det möjligt att spara de igenkända textresultaten i populära dokumentformat.
Vänligen antingen ladda ner DLL för API:t eller installera den med NuGet.
PM> Install-Package Aspose.OCR
Upptäck bildskevvinkel i C#
API:et tillhandahåller metoden CalculateSkew(string) som beräknar skevningsvinkeln för den angivna källbilden. Vi kan enkelt upptäcka snedställningsvinkeln för en textbild genom att följa stegen nedan:
- Skapa först en instans av klassen AsposeOCR.
- Anropa metoden CalculateSkew() . Den tar bildvägen som ett argument.
- Visa slutligen den beräknade snedställningsvinkeln.
Följande exempelkod visar hur man beräknar snedställningsvinkeln för en bild i C#.
// Detta kodexempel visar hur man beräknar snedställningsvinkeln för en bild.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Beräkna skevningsvinkel
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");
// Visa vinkel
Console.WriteLine($"Skew angle: {skew:N1}°");
Skew angle: 5.8°
Automatisk skevningskorrigering i C#
För automatisk skevningskorrigering kan vi aktivera egenskapen RecognitionSettings.AutoSkew i igenkänningsinställningarna genom att följa stegen nedan:
- Skapa först en instans av klassen AsposeOCR.
- Initiera sedan ett objekt av klassen RecognitionSettings.
- Ställ sedan in AutoSkew-egenskapen till true.
- Efter det, anropa metoden RecognizeImage() med källbilden och RecognitionSettings-objektet.
- Till sist, visa den igenkända texten.
Följande exempelkod visar hur man tillämpar automatisk skevningskorrigering i C#.
// Det här kodexemplet visar hur man tillämpar automatisk skevningskorrigering.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Aktivera automatisk snedställning i igenkänningsinställningar
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;
// Känner igen bilden
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Visa igenkänd text
Console.WriteLine(result.RecognitionText);
Automatisk skevningskorrigering med förbehandlingsfilter i C#
Alternativt kan vi använda förbehandlingsfiltret AutoSkew för automatisk skevningskorrigering och spara den korrigerade bilden genom att följa stegen nedan:
- Skapa först en instans av klassen AsposeOCR.
- Initiera sedan ett objekt av klassen PreprocessingFilter.
- Lägg sedan till AutoSkew()-filtret.
- Därefter anropar du metoden PreprocessImage() för att tillämpa filtret på källbilden.
- Spara slutligen den korrigerade bilden.
Följande exempelkod visar hur man tillämpar automatisk skevningskorrigering med förbehandlingsfilter i C#.
// Det här kodexemplet visar hur man använder automatisk snedställningskorrigering med förbehandlingsfilter och sparar den korrigerade bilden.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Lägg till snettfilter
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Spara förbehandlad bild till fil
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
Känn igen bildtext med automatisk skevningskorrigering i C#
Vi kan tillämpa AutoSkew-förbehandlingsfiltret och känna igen bildtext genom att följa stegen nedan:
- Skapa först en instans av klassen AsposeOCR.
- Initiera sedan ett objekt av klassen PreprocessingFilter.
- Lägg sedan till AutoSkew()-filtret.
- Skapa under tiden en instans av klassen RecognitionSettings.
- Tilldela sedan filter till egenskapen PreprocessingFilters.
- Efter det, anropa metoden RecognizeImage() med källbilden och RecognitionSettings-objektet.
- Till sist, visa den igenkända texten.
Följande exempelkod visar hur man tillämpar automatisk skevningskorrigering och känner igen texten i C#.
// Det här kodexemplet visar hur man tillämpar automatisk snedställningskorrigering med förbehandlingsfilter och känner igen bilden.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Lägg till snettfilter
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// Lägg till förbearbetningsfilter till igenkänningsinställningar
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Känner igen bilden
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Visa resultat
Console.WriteLine(result.RecognitionText);
Manuell skevningskorrigering i C#
För manuell skevningskorrigering kan vi definiera skevningsvinkeln manuellt genom att ange egenskapen SkewAngle i igenkänningsinställningarna genom att följa stegen nedan:
- Skapa först en instans av klassen AsposeOCR.
- Initiera sedan ett objekt av klassen RecognitionSettings.
- Ställ sedan in egenskapen SkewAngle.
- Efter det, anropa metoden RecognizeImage() med källbilden och RecognitionSettings-objektet.
- Till sist, visa den igenkända texten.
Följande exempelkod visar hur man använder manuell skevningskorrigering i C#.
// Detta kodexempel visar hur man använder manuell skevningskorrigering.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Ställ in snedställningsvinkeln manuellt
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;
// Känner igen bilden
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Visa resultat
Console.WriteLine(result.RecognitionText);
Manuell skevningskorrigering med förbehandlingsfilter i C#
Vi kan också definiera snedställningsvinkeln manuellt genom att rotera bilden till angiven grad genom att använda förbehandlingsfiltret Rotate.
Följ stegen nedan för att manuellt tillämpa snedställningskorrigeringen:
- Skapa först en instans av klassen AsposeOCR.
- Initiera sedan ett objekt av klassen PreprocessingFilter.
- Lägg sedan till Rotate()-filtret.
- Skapa under tiden en instans av klassen RecognitionSettings.
- Tilldela sedan filter till egenskapen PreprocessingFilters.
- Efter det, anropa metoden RecognizeImage() med källbilden och RecognitionSettings-objektet.
- Till sist, visa den igenkända texten.
Följande exempelkod visar hur man tillämpar manuell skevningskorrigering med förbearbetningsfilter i C#.
// Detta kodexempel visar hur man använder manuell skevningskorrigering och känner igen bildtext.
// Skapa en instans av AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// Rotera bilden 90 grader moturs
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));
// Spara förbehandlad bild till fil för felsökningsändamål
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
// Lägg till förbearbetningsfilter till igenkänningsinställningar
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// Känner igen bilden
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// Visa resultat
Console.WriteLine(result.RecognitionText);
Skaffa en gratis utvärderingslicens
Du kan få en gratis tillfällig licens för att prova Aspose.OCR för .NET utan utvärderingsbegränsningar.
Slutsats
I den här artikeln har vi lärt oss hur man:
- utföra OCR och känna igen text på bilder;
- tillämpa filter och bearbeta bilder;
- använd igenkänningsinställningar;
- spara de korrigerade bilderna med C#.
Förutom skevningskorrigering i bildbehandling med C# kan du lära dig mer om Aspose.OCR för .NET API med hjälp av dokumentationen. I händelse av oklarheter är du välkommen att kontakta oss på vårt gratis supportforum.