Cum de a detecta similaritatea textului și plagiarismul în imagini

Cum de a detecta similaritatea textului și plagiarismul în imagini

Detectarea textului similar sau plagiat în imaginile scanate este importantă pentru integritatea academică, revizuirea conținutului și protecția juridică. Aspose.OCR Image Text Finder pentru .NET permite detectarea de ansamblu a similitudinii conținute în arhive sau seturi de documente.

Problema lumii reale

Detectarea manuală a textului duplicat sau copiat în imaginile scanate este ineficientă și fără erori. Comparația automată condusă de OCR permite scară și repetabilitate pentru nevoile academice, de afaceri sau juridice.

Soluție de ansamblu

Extrageți textul din fiecare imagine și comparați-l cu un corpus sau set de țintă pentru similaritate ridicată.

Prevederile

  • Visual Studio 2019 sau mai târziu
  • .NET 6.0 sau mai târziu (sau .Net Framework 4.6.2+)
  • Aspose.OCR pentru .NET de la NuGet
PM> Install-Package Aspose.OCR

Implementarea pas cu pas

Pasul 1: Pregătiți seturile de imagini

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

Pasul 2: Extrageți textul din imagini

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

Pasul 3: Compara pentru Similaritate sau Duplicare

Utilizați o simplă funcție de asemănare a textului (de exemplu, distanța Levenshtein, indexul Jaccard) sau un pachet .NET pentru a se potrivi fuzzy:

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

Pasul 4: Rezultatele de înregistrare și revizuire

  • Exportul meciurilor suspectate pentru revizuirea umană sau academică/legală

Pasul 5: Exemplu complet

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

Folosește cazuri și aplicații

Integritatea academică și detectarea plagiarismului

Screenează prezentările studenților pentru conținut copiat împotriva surselor arhivate.

Revizuirea legală și contractuală

Detectați reutilizarea sau copierea limbii contractuale în docuri scanate legal.

Publicarea conținutului și mass-media

Identificați duplicarea sau reutilizarea neautorizată a textului în industriile creative.

Provocări și soluții comune

Provocare 1: Erorile de recunoaștere ale OCR

Soluție: Utilizați scanări de înaltă calitate și praguri de asemănare.

Cuvânt cheie 2: Arhivă mare

Soluție: Procesul pre-index sau batch, paralelizat dacă este necesar.

Provocare 3: Limbă sau variante de formatare

Soluție: Normalizarea textului (casei inferioare, îndepărtarea cuvintelor de oprire), procesul pe set lingvistic.

Considerații de performanță

  • Calculările similitudinii textului sunt compute-intensive pentru seturi mari - batch și calendar
  • Înregistrați toate rezultatele pentru revizuire și audit

Cele mai bune practici

  • Validați rezultatele marcate cu manual sau revizuirea comitetului
  • Tune pragurile de asemănare pentru precizie vs. pozitive false
  • Arhivă toate log-urile pentru conformitate și audit
  • Utilizarea standardizării textului structurat

Scenarii avansate

Scenariul 1: Vizualizarea rezultatelor similare

Creați diagrame sau grafice din CSV folosind unelte Excel sau BI.

Scenariul 2: Integrarea API pentru screening-ul în timp real

Imagini de ecran la încărcare și oferă feedback instant similaritate.

concluziile

Aspose.OCR Image Text Finder pentru .NET permite detectarea scalabilă, automată a conținutului similar sau plagiat în imagini – esențiale pentru fluxurile de lucru academice, juridice și de publicare.

See Aspose.OCR pentru .NET API Referință pentru compararea și căutarea mai avansată a API-urilor.

 Română