Hvordan man opdager tekstlignlighed og plagiarisme i billeder

Hvordan man opdager tekstlignlighed og plagiarisme i billeder

Detektering af lignende eller plagiariseret tekst i scannede billeder er vigtigt for akademisk integritet, indholdsundersøgelse og juridisk beskyttelse. Aspose.OCR Image Text Finder for .NET muliggør detektion af indholdssammenlighed over arkiver eller dokumenter.

Det virkelige problem

Manuel opdagelse af duplikeret eller kopieret tekst i scannede billeder er ineffektiv og fejlfrit. Automatisk OCR-drivet sammenligning tillader skala og gentagelighed for akademiske, forretnings- eller juridiske behov.

Oversigt over løsning

Ekstrakter tekst fra hvert billede og sammenlign det mod et corpus eller mål set for høj likviditet. Flag og rapporter mistanke match for anmeldelse eller opfølgning.

Forudsætninger

  • Visual Studio 2019 eller senere
  • .NET 6.0 eller nyere (eller .Net Framework 4.6.2+)
  • Aspose.OCR til .NET fra NuGet
PM> Install-Package Aspose.OCR

Step-by-Step gennemførelse

Trin 1: Forbered dine billeder

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

Trin 2: Tjek tekst fra billederne

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

Trin 3: Sammenlign for Similaritet eller Duplikation

Brug en simpel tekstlignende funktion (f.eks. Levenshtein afstand, Jaccard indeks) eller en .NET-pakke til 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;
}

Trin 4: Log og anmeldelse af resultaterne

  • Eksport mistænkte kampe til menneskelig eller akademisk / juridisk anmeldelse

Trin 5: Et fuldstændigt eksempel

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

Brug af tilfælde og applikationer

Akademisk Integritet og Plagiarismdetektion

Skær elevernes indlæg for kopieret indhold mod arkiverede kilder.

Rets- og kontraktundersøgelse

Detekter genbrug eller kopiering af kontraktsprog i juridisk scannede dokumenter.

Udgivelse af indhold og medier

Identificere duplikation eller uautoriseret genbrug af tekst i kreative industrier.

Fælles udfordringer og løsninger

Udfordring 1: OCR anerkendelsesfejl

Løsning: Brug højkvalitets scanninger og tune ligegyldighedsgrænser.

Udfordring 2: Store arkiver

**Løsning: ** Pre-index eller batch proces, paralleliser hvis det er nødvendigt.

Udfordring 3: Sprog eller Formatering Variationer

Løsning: Normaliser tekst (lowercase, fjerne stopwords), processer pr. sprog set.

Performance overvejelser

  • Tekstlignlighed beregninger er compute-intensive for store sæt – batch og tidsplan
  • Registrer alle resultaterne for gennemgang og revision

Bedste praksis

  • Validering af flaggede resultater med manuel eller komitéundersøgelse
  • Tænk likviditetsgrænser for nøjagtighed vs. falske positive
  • Arkiver alle logs for overholdelse og revision
  • Brug struktureret tekststandardisering

Avancerede scenarier

Scenario 1: Visualisere lignende resultater

Skab diagrammer eller grafer fra din CSV ved hjælp af Excel eller BI-værktøjer.

Scenario 2: API-integration til realtidsscanning

Skærmbilleder ved opladning og giver øjeblikkelig lignende feedback.

Konklusion

Aspose.OCR Image Text Finder for .NET muliggør skalaerbar, automatiseret opdagelse af lignende eller plagiariseret indhold i billeder – essentielle for akademiske, juridiske og udgivelsesarbejde.

See Aspose.OCR til .NET API Reference For mere avanceret sammenligning og søgning APIs.

 Dansk