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.