Ako zistiť textovú podobnosť a plagiarizmus v obrázkoch

Ako zistiť textovú podobnosť a plagiarizmus v obrázkoch

Detekcia podobného alebo plagiarizovaného textu v skenovaných snímkach je dôležitá pre akademickú integritu, preskúmanie obsahu a právnu ochranu. Aspose.OCR Image Text Finder pre .NET umožňuje detekciu podobnosti obsahu v archívoch alebo súboroch dokumentov.

Reálny svetový problém

Manuálna detekcia duplicitného alebo kopírovaného textu v skenovaných snímkach je neefektívna a bez chýb. Automatické OCR porovnanie umožňuje rozsah a opakovateľnosť pre akademické, obchodné alebo právne potreby.

Prehľad riešenia

Odstráňte text z každého obrazu a porovnajte ho proti korpusu alebo cieľovému nastavenia pre vysokú podobnosť.

Predpoklady

  • Visual Studio 2019 alebo neskôr
  • .NET 6.0 alebo novší (alebo .Net Framework 4.6.2+)
  • Aspose.OCR pre .NET od NuGet
PM> Install-Package Aspose.OCR

krok za krokom implementácia

Krok 1: Pripravte svoje obrázky

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

Krok 2: Odstráňte text z obrázkov

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: Porovnanie pre podobnosť alebo duplikáciu

Použite jednoduchú funkciu podobnosti textu (napr. vzdialenosť Levenshtein, index Jaccard) alebo balík .NET pre 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: Záznam a recenzie výsledkov

  • Export podozrivých zápasov pre ľudskú alebo akademickú/právnu revíziu

Krok 5: Kompletný príklad

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;
    }
}

Použitie prípadov a aplikácií

Akademická integrita a detekcia plagiarizmu

Zobraziť študentské prezentácie pre kopírovaný obsah proti archivovaným zdrojom.

Právne a zmluvné preskúmanie

Detekcia opätovného používania alebo kopírovania zmluvného jazyka v zákonne skenovaných dokumentoch.

Publikácia obsahu a médií

Identifikovať duplikáciu alebo neoprávnené opätovné použitie textu v kreatívnych odvetviach.

Spoločné výzvy a riešenia

Výzva 1: Chyby pri uznávaní OCR

Riešenie: Použite vysoko kvalitné skenovanie a tónové podobnosti.

Výzva 2: Veľké archívy

Riešenie: Pre-index alebo batch proces, v prípade potreby paralelizovať.

Výzva 3: Jazyk alebo formátovanie variácií

Riešenie: Normalizujte text (zníženie prípadu, odstránenie stopwords), proces podľa jazykového nastavenia.

Preskúmanie výkonnosti

  • Výpočty podobnosti textu sú počítačovo intenzívne pre veľké súbory - zápas a harmonogram
  • Zaregistrovať všetky výsledky pre preskúmanie a audit

Najlepšie postupy

  • Validácia výsledkov s manuálom alebo hodnotenie výboru
  • Nastavte hranice podobnosti pre presnosť vs. falošné pozitívy
  • Archív všetkých záznamov pre dodržiavanie a audit
  • Používať štruktúrovanú textovú normalizáciu

Pokročilé scenáre

Scenár 1: Zobraziť výsledky podobnosti

Vytvorte diagramy alebo grafy z vášho CSV pomocou nástrojov Excel alebo BI.

Scenár 2: Integrovanie API pre skenovanie predloženia v reálnom čase

Zobraziť obrázky pri nahrávaní a poskytnúť okamžitú spätnú väzbu o podobnosti.

Záver

Aspose.OCR Image Text Finder pre .NET umožňuje skalovateľné, automatizované detekcie podobného alebo plagiarizovaného obsahu v obrazoch, ktoré sú nevyhnutné pre akademické, právne a publikačné pracovné toky.

See Aspose.OCR pre .NET API referencie pre pokročilejšie porovnanie a vyhľadávanie APIs.

 Slovenčina