Come rilevare la similità di testo e il plagiarismo nelle immagini

Come rilevare la similità di testo e il plagiarismo nelle immagini

La rilevazione di testo simile o plagiarizzato nelle immagini scansionate è importante per l’integrità accademica, la revisione del contenuto e la protezione legale. Aspose.OCR Image Text Finder per .NET consente la rilevanza di somiglianza dei contenuti attraverso archivi o set di documenti.

Il problema del mondo reale

La rilevazione manuale del testo duplicato o copiato nelle immagini scansionate è inefficace e proiettile.La comparazione automatica OCR consente scala e ripetibilità per esigenze accademiche, aziendali o legali.

Soluzione Overview

Rimuovere il testo da ogni immagine e confrontarlo contro un corpus o target set per un’elevata somiglianza.

Prerequisiti

  • Visual Studio 2019 o successivo
  • .NET 6.0 o successivo (o .Net Framework 4.6.2+)
  • Aspose.OCR per .NET da NuGet
PM> Install-Package Aspose.OCR

Implementazione passo dopo passo

Passo 1: Prepara il tuo set di immagini

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

Passo 2: Rimuovere il testo dalle immagini

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

Passo 3: Compare per Similità o Duplicazione

Utilizzare una semplice funzione di somiglianza del testo (ad esempio, la distanza di Levenshtein, l’indice Jaccard) o un pacchetto .NET per corrispondere 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;
}

Passo 4: Log e risultati di revisione

  • Esportazione dei partiti sospettati per la revisione umana o accademica/legale

Passo 5: Un esempio completo

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

Utilizzare casi e applicazioni

Integrità accademica e rilevamento del plagiarismo

Visualizza le presentazioni degli studenti per il contenuto copiato contro le fonti archiviate.

revisione legale e contrattuale

Determinare il riutilizzo o la copia del linguaggio contrattuale in docci scansionati legalmente.

Pubblicazione dei contenuti e media

Identificare la duplicazione o il riutilizzo non autorizzato del testo nelle industrie creative.

Sfide e soluzioni comuni

Problema 1: errori di riconoscimento OCR

Soluzione: Utilizzare scansioni di alta qualità e soglie di similità di tono.

Sito ufficiale: Big Archive Set

Soluzione: Pre-index o processo di batch, parallelizzare se necessario.

Challenge 3: linguaggio o variazioni di formattazione

**Soluzione: ** Normalizzare il testo (case inferiore, rimuovere le parole di sospensione), processo per set di lingua.

Considerazioni di prestazioni

  • I calcoli di similità di testo sono computazionali-intensivi per i grandi set — batch e calendario
  • Registrare tutti i risultati per la revisione e l’audit

Migliori pratiche

  • Validare i risultati con manuale o revisione del comitato
  • Tune i limiti di somiglianza per la precisione vs. falsi positivi
  • Archiviare tutti i log per la conformità e l’audit
  • Utilizzare la normalizzazione del testo strutturato

Scenari avanzati

Scenario 1: Visualizza i risultati simili

Crea grafici o grafiti dal tuo CSV utilizzando strumenti Excel o BI.

Scenario 2: Integrazione API per la visualizzazione della presentazione in tempo reale

Visualizza le immagini al momento del caricamento e fornisce feedback di similità istantanea.

conclusione

Aspose.OCR Image Text Finder per .NET consente la rilevazione scalabile, automatizzata di contenuti simili o plagiarizzati nelle immagini – essenziali per i flussi di lavoro accademici, legali e pubblicativi.

See Aspose.OCR per .NET API Reference Per un confronto più avanzato e la ricerca di API.

 Italiano