Jak wykryć podobieństwo tekstu i plagiarizm w obrazach

Jak wykryć podobieństwo tekstu i plagiarizm w obrazach

Odkrywanie podobnego lub plagiarizowanego tekstu w skanowanych obrazach jest ważne dla integralności akademickiej, przeglądu treści i ochrony prawnej. Aspose.OCR Image Text Finder dla .NET umożliwia zbiór odkrywania podobieństwa zawartości w archiwach lub zestawach dokumentów.

Problem świata rzeczywistego

Ręczne wykrywanie duplikowanego lub skopiowanego tekstu w skanowanych obrazach jest nieefektywne i błędne. automatyczne porównanie prowadzone przez OCR pozwala na skalę i powtarzalność dla potrzeb akademickich, biznesowych lub prawnych.

Przegląd rozwiązania

Ekstraktuj tekst z każdego obrazu i porównaj go z korpusem lub celem, aby uzyskać wysoką podobieństwo. flaga i raport podejrzane mecze do przeglądu lub śledzenia.

Warunki

  • Visual Studio 2019 lub później
  • .NET 6.0 lub nowszy (lub .Net Framework 4.6.2+)
  • Aspose.OCR dla .NET od NuGet
PM> Install-Package Aspose.OCR

Wdrażanie krok po kroku

Krok 1: Przygotuj zestaw obrazu

string[] archiveFiles = Directory.GetFiles("./archive", "*.png");
string[] submissionFiles = Directory.GetFiles("./submissions", "*.png");

Krok 2: Wyciągnij tekst z obrazów

RecognitionSettings settings = new RecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
Dictionary<string, string> archiveTexts = new Dictionary<string, string>();
foreach (string file in archiveFiles)
{
    string text = ocr.Recognize(new OcrInput(InputType.SingleImage) { file }, settings)[0].RecognitionText;
    archiveTexts[file] = text;
}

Krok 3: Porównanie podobieństwa lub duplikacji

Użyj prostej funkcji podobieństwa tekstu (np. odległości Levenshtein, indeksu Jaccard) lub pakietu .NET dla fuzzy matching:

foreach (string subFile in submissionFiles)
{
    string subText = ocr.Recognize(new OcrInput(InputType.SingleImage) { subFile }, settings)[0].RecognitionText;
    foreach (var kvp in archiveTexts)
    {
        double similarity = JaccardSimilarity(subText, kvp.Value); // custom function or library
        if (similarity > 0.8) // Tune threshold for your needs
        {
            File.AppendAllText("plagiarism_log.csv", $"{subFile},{kvp.Key},{similarity}\n");
        }
    }
}

// Example Jaccard similarity (token-based)
double JaccardSimilarity(string text1, string text2)
{
    var set1 = new HashSet<string>(text1.Split());
    var set2 = new HashSet<string>(text2.Split());
    int intersect = set1.Intersect(set2).Count();
    int union = set1.Union(set2).Count();
    return (double)intersect / union;
}

Krok 4: Wyniki rejestracji i przeglądu

  • Eksport podejrzanych meczów dla oceny ludzkiej lub akademickiej / prawnej

Krok 5: Pełny przykład

using Aspose.OCR;
using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string[] archiveFiles = Directory.GetFiles("./archive", "*.png");
        string[] submissionFiles = Directory.GetFiles("./submissions", "*.png");
        RecognitionSettings settings = new RecognitionSettings();
        settings.Language = Language.English;
        AsposeOcr ocr = new AsposeOcr();
        Dictionary<string, string> archiveTexts = new Dictionary<string, string>();
        foreach (string file in archiveFiles)
            archiveTexts[file] = ocr.Recognize(new OcrInput(InputType.SingleImage) { file }, settings)[0].RecognitionText;
        foreach (string subFile in submissionFiles)
        {
            string subText = ocr.Recognize(new OcrInput(InputType.SingleImage) { subFile }, settings)[0].RecognitionText;
            foreach (var kvp in archiveTexts)
            {
                double sim = JaccardSimilarity(subText, kvp.Value);
                if (sim > 0.8)
                    File.AppendAllText("plagiarism_log.csv", $"{subFile},{kvp.Key},{sim}\n");
            }
        }
    }
    static double JaccardSimilarity(string text1, string text2)
    {
        var set1 = new HashSet<string>(text1.Split());
        var set2 = new HashSet<string>(text2.Split());
        int intersect = set1.Intersect(set2).Count();
        int union = set1.Union(set2).Count();
        return (double)intersect / union;
    }
}

Korzystanie z przypadków i aplikacji

Znalezienie integralności akademickiej i plagiarizmu

Wyświetlanie zgłoszeń studentów na kopiowane treści przeciwko archiwizowanym źródłom.

Przegląd prawny i umów

Zidentyfikuj ponowne użycie lub kopiowanie języka umownego w prawnie skanowanych dokumentach.

Publikacja treści i media

Identyfikacja duplikacji lub nieautoryzowanego ponownego wykorzystania tekstu w branżach twórczych.

Wspólne wyzwania i rozwiązania

Wyzwanie 1: Błędy w rozpoznawaniu OCR

Rozwiązanie: Użyj wysokiej jakości skanowania i tonowych granic podobieństwa.

Wyzwanie 2: Wielki zestaw archiwów

**Rozwiązanie: ** Proces pre-index lub batch, w razie potrzeby równolegle.

Wyzwanie 3: Język lub formatowanie wariantów

**Rozwiązanie: ** Normalizuj tekst (lowercase, usunąć stopwords), proces według zestawu językowego.

uwzględnienie wydajności

  • Obliczenia podobieństwa tekstu są komputerowo intensywne dla dużych zestawów – batch i harmonogram
  • Zarejestruj wszystkie wyniki przeglądu i audytu

Najlepsze praktyki

  • Potwierdzenie wyników za pomocą podręcznika lub przeglądu komitetu
  • Tunić granice podobieństwa dla dokładności vs. fałszywych pozytywów
  • Archiwum wszystkich logów dla zgodności i audytu
  • Wykorzystanie strukturowanej normalizacji tekstu

Zaawansowane scenariusze

Scenariusz 1: Wizualizuj podobne wyniki

Tworzenie wykresów lub wykładów z CSV za pomocą narzędzi programu Excel lub BI.

Scenariusz 2: Integracja API w czasie rzeczywistym

Wyświetlanie obrazów podczas przesyłania i dostarczanie natychmiastowej zwrotnej podobieństwa.

konkluzja

Aspose.OCR Image Text Finder dla .NET umożliwia skalowalne, automatyczne wykrywanie podobnych lub plagiarizowanych treści w obrazach – niezbędnych dla akademickich, prawnych i publikacyjnych przepływów pracy.

See Aspose.OCR dla .NET API Referencje Dla bardziej zaawansowanego porównania i wyszukiwania APIs.

 Polski