Wstęp

dzisiejszym ekosystemie dokumentów cyfrowych podpisy graficzne pełnią funkcję silnych znaczników wizualnych do brandingu, autoryzacji i walidacji dokumentów. GroupDocs.Signature for .NET zapewnia programistom kompleksowe środowisko do bezproblemowego wyszukiwania, identyfikowania i przetwarzania podpisów graficznych w dokumentach w różnych formatach. Ta funkcja jest niezbędna w aplikacjach wymagających weryfikacji dokumentów, analizy treści lub automatycznego przetwarzania podpisanych dokumentów.

W tym samouczku przedstawiono proces implementacji funkcji wyszukiwania podpisów obrazów w aplikacjach .NET przy użyciu GroupDocs.Signature. Znajdują się w nim przejrzyste wyjaśnienia i praktyczne przykłady kodu.

Wymagania wstępne

Zanim przejdziesz do wyszukiwania podpisów obrazów za pomocą GroupDocs.Signature dla .NET, upewnij się, że spełnione są następujące wymagania wstępne:

  1. Środowisko programistyczne .NET: działające środowisko programistyczne .NET, takie jak Visual Studio.

  2. Biblioteka GroupDocs.Signature dla platformy .NET: Pobierz i zainstaluj bibliotekę GroupDocs.Signature dla platformy .NET z Tutaj.

  3. Przykładowe dokumenty: Przygotuj dokumenty testowe z podpisami obrazkowymi w celu weryfikacji i testowania.

  4. Podstawowa wiedza z zakresu języka C#: zrozumienie podstaw programowania w języku C#.

Importuj przestrzenie nazw

Zacznij od zaimportowania niezbędnych przestrzeni nazw, aby uzyskać dostęp do funkcjonalności GroupDocs.Signature:

using System;
using System.IO;
using System.Collections.Generic;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;

Teraz omówmy proces wyszukiwania podpisów obrazów na jasne i łatwe do wykonania kroki:

Krok 1: Zdefiniuj ścieżkę dokumentu i informacje o pliku

Najpierw określ ścieżkę do dokumentu zawierającego podpisy graficzne i wyodrębnij jego nazwę pliku, aby móc się do niej odwołać:

string filePath = "sample_multiple_signatures.docx";
string fileName = Path.GetFileName(filePath);

Krok 2: Zainicjuj obiekt podpisu

Utwórz instancję Signature klasę przekazując ścieżkę do pliku konstruktorowi:

using (Signature signature = new Signature(filePath))
{
    // Tutaj zostanie dodany kod wyszukiwania podpisu obrazu
}

Krok 3: Wyszukaj podpisy obrazów

Użyj Search metoda z odpowiednim typem podpisu, aby znaleźć podpisy obrazkowe w dokumencie:

// Wyszukaj podpisy obrazów w dokumencie
List<ImageSignature> signatures = signature.Search<ImageSignature>(SignatureType.Image);

Krok 4: Przetwarzanie i wyświetlanie wyników

Przejrzyj znalezione sygnatury obrazów i uzyskaj dostęp do ich właściwości:

// Wyświetl informacje o znalezionych podpisach obrazów
Console.WriteLine($"\nSource document '{fileName}' contains {signatures.Count} image signature(s).");

foreach (ImageSignature imageSignature in signatures)
{
    Console.WriteLine($"Found image signature at page {imageSignature.PageNumber} with size {imageSignature.Size}.");
    Console.WriteLine($"Location: X={imageSignature.Left}, Y={imageSignature.Top}");
    Console.WriteLine($"Dimensions: Width={imageSignature.Width}, Height={imageSignature.Height}");
}

Pełny przykład

Oto kompleksowy, działający przykład pokazujący, jak wyszukiwać podpisy obrazów w dokumencie:

using System;
using System.IO;
using System.Collections.Generic;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;

namespace ImageSignatureSearch
{
    class Program
    {
        static void Main(string[] args)
        {
            // Ścieżka dokumentu
            string filePath = "sample_multiple_signatures.docx";
            string fileName = Path.GetFileName(filePath);
            
            // Zainicjuj instancję podpisu
            using (Signature signature = new Signature(filePath))
            {
                try
                {
                    // Wyszukaj podpisy obrazów w dokumencie
                    List<ImageSignature> signatures = signature.Search<ImageSignature>(SignatureType.Image);
                    
                    // Wyświetl wyniki wyszukiwania
                    Console.WriteLine($"\nSource document '{fileName}' contains {signatures.Count} image signature(s).");
                    
                    foreach (ImageSignature imageSignature in signatures)
                    {
                        Console.WriteLine($"Found image signature at page {imageSignature.PageNumber} with size {imageSignature.Size}.");
                        Console.WriteLine($"Location: X={imageSignature.Left}, Y={imageSignature.Top}");
                        Console.WriteLine($"Dimensions: Width={imageSignature.Width}, Height={imageSignature.Height}");
                        Console.WriteLine();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error occurred: {ex.Message}");
                }
            }
            
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Zaawansowane techniki wyszukiwania podpisów obrazkowych

Korzystanie z niestandardowych opcji wyszukiwania

Aby uzyskać bardziej szczegółowe wyszukiwania, możesz użyć ImageSearchOptions aby dostosować kryteria wyszukiwania:

// Utwórz opcje wyszukiwania obrazów
ImageSearchOptions options = new ImageSearchOptions
{
    // Szukaj na określonych stronach
    AllPages = false,
    PageNumber = 1,
    PagesSetup = new PagesSetup { Pages = new List<int> { 1, 3, 5 } },
    
    // Szukaj tylko w określonych obszarach strony
    Rectangle = new Rectangle(100, 100, 400, 200),
    
    // Ustaw minimalne i maksymalne wymiary obrazu, aby filtrować wyniki
    MinWidth = 50,
    MinHeight = 50,
    MaxWidth = 300,
    MaxHeight = 300
};

// Szukaj z niestandardowymi opcjami
List<ImageSignature> filteredSignatures = signature.Search<ImageSignature>(options);

Przetwarzanie danych podpisu obrazu

Znalezione sygnatury obrazów można poddać dalszej obróbce, np. zapisując je w osobnych plikach lub analizując ich zawartość:

foreach (ImageSignature imageSignature in signatures)
{
    // Uzyskaj dostęp do danych obrazu
    byte[] imageData = imageSignature.ImageData;
    
    // Zapisz obraz do pliku
    string outputPath = $"extracted_image_{imageSignature.PageNumber}_{Guid.NewGuid()}.png";
    File.WriteAllBytes(outputPath, imageData);
    
    Console.WriteLine($"Saved image signature to {outputPath}");
    
    // Możesz również analizować obraz, korzystając z bibliotek zewnętrznych
    // AnalyzeImage(imageData);
}

Porównywanie sygnatur obrazowych

Można zaimplementować logikę porównawczą, aby dopasować podpisy obrazów do znanych szablonów:

// Załaduj obraz referencyjny do porównania
byte[] referenceImage = File.ReadAllBytes("reference_signature.png");

foreach (ImageSignature foundSignature in signatures)
{
    // Porównaj znaleziony podpis z obrazem referencyjnym
    // To jest uproszczony przykład – w rzeczywistej implementacji zastosowano by algorytmy przetwarzania obrazu
    bool isMatch = CompareImages(foundSignature.ImageData, referenceImage);
    
    if (isMatch)
    {
        Console.WriteLine($"Found matching signature at page {foundSignature.PageNumber}!");
    }
}

// Prosta funkcja porównania (dla celów ilustracyjnych)
static bool CompareImages(byte[] image1, byte[] image2)
{
    // W rzeczywistym zastosowaniu należy wdrożyć odpowiednie porównanie obrazów
    // stosując techniki takie jak dopasowywanie cech, porównywanie histogramów itp.
    
    // Miejsce zastępcze dla rzeczywistej logiki porównania obrazów
    return image1.Length == image2.Length;
}

Wniosek

tym samouczku pokażemy, jak skutecznie wyszukiwać podpisy graficzne w dokumentach za pomocą GroupDocs.Signature dla platformy .NET. Od wyszukiwania podstawowego po zaawansowane techniki, w tym dostosowywanie kryteriów wyszukiwania i dalsze przetwarzanie znalezionych podpisów, posiadasz teraz wiedzę niezbędną do wdrożenia kompleksowej funkcjonalności podpisów graficznych w aplikacjach .NET.

GroupDocs.Signature udostępnia solidny i elastyczny interfejs API do pracy z różnymi typami podpisów, co czyni go doskonałym wyborem dla aplikacji do przetwarzania dokumentów, które wymagają analizy, weryfikacji lub ekstrakcji podpisów.

Najczęściej zadawane pytania

Czy GroupDocs.Signature może wykryć wszystkie formaty obrazów jako podpisy?

GroupDocs.Signature potrafi wykrywać różne formaty obrazów, w tym PNG, JPEG, BMP i GIF, jako podpisy w dokumentach, pod warunkiem, że zostały one poprawnie dodane jako elementy podpisu, a nie zwykłe obrazy stanowiące treść.

Czy można wyszukiwać podpisy graficzne w określonych obszarach dokumentu?

Tak, korzystając z Rectangle nieruchomość w ImageSearchOptionsMożna ograniczyć wyszukiwanie do określonych obszarów strony dokumentu, co jest przydatne w przypadku dokumentów z predefiniowanymi obszarami podpisów.

Czy mogę wyszukiwać podpisy obrazkowe w dokumentach chronionych hasłem?

Tak, GroupDocs.Signature obsługuje wyszukiwanie w dokumentach chronionych hasłem poprzez podanie hasła w LoadOptions podczas inicjalizacji Signature obiekt:

LoadOptions loadOptions = new LoadOptions { Password = "your_password" };
using (Signature signature = new Signature(filePath, loadOptions))
{
    // Wyszukaj podpisy obrazów
}

Jak mogę stwierdzić, czy obraz w dokumencie jest podpisem czy zwykłym obrazem?

GroupDocs.Signature koncentruje się na wyszukiwaniu obrazów dodanych jako elementy podpisu. Jeśli chcesz odróżnić zwykłe obrazy od obrazów podpisu, możesz użyć właściwości, takich jak położenie obrazu (zazwyczaj podpisy pojawiają się w określonych obszarach) lub zaimplementować niestandardową weryfikację w oparciu o logikę biznesową.

Czy mogę filtrować podpisy na obrazach na podstawie ich rozmiaru lub wymiarów?

Tak, ImageSearchOptions zapewnia właściwości takie jak MinWidth, MinHeight, MaxWidth, I MaxHeight które umożliwiają filtrowanie podpisów na podstawie ich wymiarów, dzięki czemu łatwiej jest odróżniać różne typy elementów obrazu.

Zobacz także