Comment détecter la simplicité du texte et le plagiarisme dans les images

Comment détecter la simplicité du texte et le plagiarisme dans les images

La détection de texte similaire ou plagiarisé dans les images scanées est importante pour l’intégrité académique, la révision du contenu et la protection juridique. Aspose.OCR Image Text Finder pour .NET permet la détection d’un ensemble de ressemblances contenues à travers les archives ou les ensembles de documents.

Problème du monde réel

La détection manuelle du texte dupliqué ou copié dans les images scannées est inefficace et sans erreur. La comparaison automatisée OCR permet une échelle et une répétabilité pour les besoins académiques, commerciaux ou juridiques.

Vue de la solution

Extraitez le texte de chaque image et comparez-le contre un corpus ou un objectif pour une similitude élevée.

Principaux

  • Visual Studio 2019 ou ultérieur
  • .NET 6.0 ou ultérieur (ou .Net Framework 4.6.2+)
  • Aspose.OCR pour .NET de NuGet
PM> Install-Package Aspose.OCR

La mise en œuvre étape par étape

Étape 1 : Préparez vos images

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

Étape 2 : extraire le texte des images

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

Étape 3 : Comparaison pour Similarité ou Duplication

Utilisez une fonction de similitude de texte simple (par exemple, la distance de Levenshtein, l’indice Jaccard) ou un paquet .NET pour correspondre 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;
}

Étape 4 : Log et résultats de la révision

  • Exportation des matchs soupçonnés pour examen humain ou académique / juridique

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

Utiliser les cas et les applications

L’intégrité académique et la détection du plagiarisme

Afficher les présentations étudiantes pour le contenu copié contre les sources archivées.

Revue juridique et contractuelle

Détecter la réutilisation ou la copie de la langue contractuelle dans des dossiers scanés légalement.

Publication de contenu et médias

Identifier la duplication ou la réutilisation non autorisée du texte dans les industries créatives.

Défis communs et solutions

Défi 1 : erreurs de reconnaissance de l’OCR

Solution: Utilisez des scans de haute qualité et des seuils de similitude.

Défi 2 : Les grands archives

Solution: Pré-index ou processus de batch, parallèle si nécessaire.

Défi 3 : Variations de langage ou de formatage

Solution: Normaliser le texte (case inférieure, supprimer les mots d’arrêt), procéder par langage.

Considérations de performance

  • Les calculs de la simplicité de texte sont computing-intensives pour les grands ensembles — batch et calendrier
  • Téléchargez tous les résultats pour l’examen et l’audit

Migliori pratiche

  • Valider les résultats flagrés avec une revue manuelle ou de comité
  • Tune les seuils de similitude pour l’exactitude vs. faux positifs
  • Archives de tous les logs pour la conformité et l’audit
  • Utiliser une normalisation textuelle structurée

Scénarios avancés

Scénario 1 : Visualiser les résultats similaires

Créez des diagrammes ou des graphiques de votre CSV en utilisant les outils Excel ou BI.

Scénario 2: Intégration API pour l’écran de soumission en temps réel

Écrivez les images lors de l’envoi et fournissez un feedback de similitude instantané.

Conclusion

Aspose.OCR Image Text Finder pour .NET permet la détection scalable, automatisée de contenus similaires ou plagiarisés dans les images – essentielles pour les flux de travail académique, juridique et de publication.

See Aspose.OCR pour la référence API .NET Pour une comparaison et une recherche plus avancées des APIs.

 Français