Com detectar la similitud de text i el plagiarisme en imatges

Com detectar la similitud de text i el plagiarisme en imatges

Detectar text similar o plagiat en imatges escanades és important per a la integritat acadèmica, la revisió de continguts i la protecció jurídica. Aspose.OCR Image Text Finder per .NET permet la detecció de conjunt de similituds de contingut a través d’arxius o sets de documents.

El problema del món real

La detecció manual de text duplicat o copiat en imatges escanejades és ineficient i per error. Comparació automatitzada OCR permet l’escala i la repetibilitat per a necessitats acadèmiques, empresarials o legals.

Revisió de solucions

Extraure text de cada imatge i comparar-lo contra un corpus o target set per a una alta similitud.

Prerequisits

  • Visual Studio 2019 o posterior
  • .NET 6.0 o posterior (o .Net Framework 4.6.2+)
  • Aspose.OCR per a .NET des de NuGet
PM> Install-Package Aspose.OCR

Implementació de pas a pas

Pas 1: Prepareu la vostra imatge

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

Pas 2: Extraure text de les imatges

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

Pas 3: Comparació per a similitud o duplicació

Utilitzeu una senzilla funció de similitud de text (per exemple, la distància de Levenshtein, l’índex Jaccard) o un paquet .NET per a la combinació 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;
}

Pas 4: Registre i revisar els resultats

  • Exportació de partits sospitosos per a la revisió humana o acadèmica/legal

Pas 5: Exemple 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;
    }
}

Utilitzar casos i aplicacions

Integritat acadèmica i detecció de plagiarisme

Mostra les presentacions dels estudiants per a continguts copiats contra fonts arxivades.

Revisió legal i contractual

Detectar reutilització o còpia del llenguatge contractual en documents escanats legalment.

Publicació de continguts i mitjans

Identificar la duplicació o el reús no autoritzat del text en indústries creatives.

Els reptes i les solucions comunes

Títol 1: Errors de reconeixement de l’OCR

Solució: Utilitza escans d’alta qualitat i barreres de similitud.

Títol 2: Els grans arxius

** Solució: ** Pre-index o procés de batxeta, paral·lelitzar si és necessari.

Challenge 3: Llenguatge o variacions de formatatge

**Solució: ** Normalitzar el text (case inferior, eliminar paraules d’atur), processar per set de llenguatge.

Consideracions de rendiment

  • Els càlculs de similitud de text són computacionalment intensos per a grans sets - batx i horari
  • Registre tots els resultats per a la revisió i auditoria

Les millors pràctiques

  • Validar els resultats flagrats amb manual o revisió de comitè
  • Tuneu els límits de similitud per a la precisió vs. falsos positius
  • Arxiu tots els registres per a la conformitat i auditoria
  • Utilitzar normalització de text estructurada

Escenaris avançats

Escenari 1: Visualitza els resultats de la similitud

Crear diagrams o gràfics del seu CSV utilitzant eines d’Excel o BI.

Escenari 2: Integració d’API per a l’escena de presentació en temps real

Mostra les imatges a l’hora de carregar i proporciona feedback de similitud instantània.

Conclusió

Aspose.OCR Image Text Finder per a .NET permet la detecció escalable, automatitzada de continguts similars o plagiaritzats en imatges, essencials per als fluxos de treball acadèmics, legals i de publicació.

See Aspose.OCR per a .NET API Referència Per a una comparació més avançada i la cerca d’API.

 Català