Cómo detectar la similitud de texto y el plagiarismo en las imágenes

Cómo detectar la similitud de texto y el plagiarismo en las imágenes

Detectar texto similar o plagiarizado en imágenes escaneadas es importante para la integridad académica, la revisión de contenidos y la protección legal. Aspose.OCR Image Text Finder para .NET permite la detección de similitud de contenido en conjunto a través de archivos o conjuntos de documentos.

Problemas del mundo real

La detección manual de texto duplicado o copiado en las imágenes escaneadas es ineficiente y prohibida por errores. La comparación automatizada guiada por OCR permite la escala y la repetición para las necesidades académicas, empresariales o legales.

Revisión de Soluciones

Extraer texto de cada imagen y compararlo contra un corpus o meta para una alta similitud.Flag y report sospechosos partidos para revisión o seguimiento.

Prerequisitos

  • Visual Studio 2019 o más tarde
  • .NET 6.0 o posterior (o .Net Framework 4.6.2+)
  • Aspose.OCR para .NET de NuGet
PM> Install-Package Aspose.OCR

Implementación paso a paso

Paso 1: Prepare tus imágenes

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

Paso 2: Extraer texto de las imágenes

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

Paso 3: Comparación para Similaridad o Duplación

Utilice una simple función de similitud de texto (por ejemplo, la distancia de Levenshtein, el índice Jaccard) o un paquete .NET para la combinación 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;
}

Paso 4: Log y resultados de la revisión

  • Exportación de partidos sospechosos para revisión humana o académica/legal

Paso 5: El ejemplo 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;
    }
}

Usar Casos y Aplicaciones

Integridad académica y detección del plagiarismo

Mostrar presentaciones de estudiantes para contenidos copiados contra fuentes archivadas.

Revisión legal y contractual

Detectar reutilización o copia de la lengua contractual en documentos escaneados legalmente.

Publicación de contenidos y medios

Identificar la duplicación o el uso no autorizado de texto en las industrias creativas.

Desafíos y soluciones comunes

Desafío 1: Errores de reconocimiento de OCR

Solución: Utilice escaneos de alta calidad y límites de similitud de tonos.

Título 2: Grandes archivos

Solución: Proceso de pre-index o batch, paralelizado si es necesario.

Desafío 3: Variaciones de lenguaje o formatación

**Solución: ** Normalizar el texto (caso inferior, eliminar las palabras de parada), procesar por set de lenguaje.

Consideraciones de rendimiento

  • Los cálculos de similitud de texto son computacional-intensos para los grandes conjuntos - batch y horario
  • Logar todos los resultados para revisión y auditoría

Mejores Prácticas

  • Validar los resultados marcados con una revisión manual o de comité
  • Tone los límites de similitud para la precisión vs. falsos positivos
  • Archivo de todos los logs para el cumplimiento y la auditoría
  • Normalizar el texto estructurado

Escenarios avanzados

Escenario 1: Visualizar los resultados de la similitud

Crea diagramas o gráficos de su CSV utilizando las herramientas de Excel o BI.

Escenario 2: Integración de API para el examen de presentación en tiempo real

Imágenes de pantalla al subir y proporcionar feedback de similitud instantánea.

Conclusión

Aspose.OCR Image Text Finder para .NET permite la detección escalable, automatizada de contenidos similares o plagiados en imágenes, esenciales para los flujos de trabajo académicos, legales y de publicación.

See Aspose.OCR para .NET API Referencia Para una comparación más avanzada y la búsqueda de APIs.

 Español