Jak zjistit podobnost textu a plagiarismus ve snímcích

Jak zjistit podobnost textu a plagiarismus ve snímcích

Detekce podobného nebo plagiarizovaného textu v skenovaných snímcích je důležitá pro akademickou integritu, přezkum obsahu a právní ochranu. Aspose.OCR Image Text Finder pro .NET umožňuje detekci podobnosti obsahu v souborech archivů nebo souborů dokumentů.

Reálný světový problém

Manuální detekce duplikovaného nebo kopírovaného textu v skenovaných snímcích je neúčinná a chybová. Automatické porovnání řízené OCR umožňuje rozsah a opakovatelnost pro akademické, obchodní nebo právní potřeby.

Řešení přehled

Text extrahujte z každého obrazu a porovnejte ho proti tělu nebo cílovému nastavení pro vysokou podobnost. vlajka a zpráva podezřelé zápasy pro recenzi nebo sledování.

Předpoklady

  • Visual Studio 2019 nebo novější
  • .NET 6.0 nebo novější (nebo .Net Framework 4.6.2+)
  • Aspose.OCR pro .NET z NuGet
PM> Install-Package Aspose.OCR

krok za krokem implementace

Krok 1: Připravte si obrázky

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

Krok 2: Odstraňte text z obrázků

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: Porovnejte srovnání nebo duplikace

Použijte jednoduchou funkci podobnosti textu (např. vzdálenost Levenshtein, index Jaccard) nebo balíček .NET pro 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 výsledky přezkumu

  • Export podezřelých zápasů pro lidské nebo akademické / právní hodnocení

Krok 5: Kompletní pří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žití případů a aplikací

Akademická integrita a detekce plagiarismu

Zobrazit studentské předložení pro kopírování obsahu proti archivovaným zdrojům.

Právní a smluvní přezkum

Zjistí opakované používání nebo kopírování smluvního jazyka v zákonně skenovaných dokumentech.

Publikace obsahu a médií

Identifikovat duplikace nebo neoprávněné opakované používání textu v tvůrčích odvětvích.

Společné výzvy a řešení

Výzva 1: Chyby v rozpoznávání OCR

Rozhodnutí: Použijte vysoce kvalitní skenování a tónové podobnosti.

Výzva 2: Velké soubory archivů

Rozhodnutí: Pre-index nebo batch proces, v případě potřeby paralelizujte.

Výzva 3: Variace jazyka nebo formátování

**Rozhodnutí: ** Normalizace textu (nízký případ, odstranění stopwords), proces podle jazykového nastavení.

Úvahy o výkonu

  • Výpočty podobnosti textu jsou počítačově intenzivní pro velké soubory – batch a harmonogram
  • Záznam všech výsledků pro přezkum a audit

Nejlepší postupy

  • Validace výsledků s manuálem nebo revizí výboru
  • Hranice srovnání pro přesnost vs. falešné pozitivy
  • Archivovat všechny záznamy pro dodržování a audit
  • Použití strukturované textové normalizace

Pokročilé scénáře

Scénář 1: Vizualizujte výsledky podobnosti

Vytvořte grafy nebo grafiky z vašeho CSV pomocí nástrojů Excel nebo BI.

Scénář 2: Integrace API pro skenování předložení v reálném čase

Zobrazit obrázky při nahrávání a poskytnout okamžitou podobnost zpětnou vazbu.

závěr

Aspose.OCR Image Text Finder pro .NET umožňuje skalovatelné, automatické detekce podobného nebo plagiarizovaného obsahu ve snímcích, které jsou nezbytné pro akademické, právní a publikační pracovní toky.

See Aspose.OCR pro .NET API Reference Pro lepší srovnání a vyhledávání API.

 Čeština