Как обнаружить текстовое сходство и плагиарство в изображениях

Как обнаружить текстовое сходство и плагиарство в изображениях

Открытие подобного или плагированного текста в сканированных изображениях имеет важное значение для академической целостности, просмотра контента и правовой защиты. Aspose.OCR Image Text Finder для .NET позволяет отслеживать сборы содержания сходства в архивах или документах.

Реальные мировые проблемы

Ручное обнаружение дублируемого или копированного текста в сканированных изображениях неэффективно и без ошибок. Автоматизированное сравнение на основе ОКР позволяет масштабировать и повторять для академических, деловых или юридических потребностей.

Решение обзор

Извлечь текст из каждого изображения и сравнить его с корпусом или целевым набором для высокой сходства. флаг и отчет подозрительные матчи для обзора или отслеживания.

Предупреждения

  • Visual Studio 2019 или позднее
  • .NET 6.0 или более поздний (или .Net Framework 4.6.2+)
  • ASPOSE.OCR для .NET от NuGet
PM> Install-Package Aspose.OCR

Step-by-Step реализация

Шаг 1: Подготовите свои изображения

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

Шаг 2: Извлечение текста из изображений

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

Шаг 3: Сравнение для сходства или дублирования

Используйте простую функцию сходства текста (например, расстояние Levenshtein, индекс Jaccard) или пакет .NET для смешанного соответствия:

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

Шаг 4: Регистрация и отзывы результатов

  • Экспорт подозрительных матчей для человеческого или академического / юридического обследования

Шаг 5: Полный пример

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

Используйте случаи и приложения

Академическая целостность и обнаружение плагиарства

Просмотр студенческих презентаций для копированного контента против архивированных источников.

Юридический и договорный обзор

Выявить повторное использование или копирование контрактного языка в законно сканированных документах.

Публикация контента и СМИ

Идентифицировать дублирование или несанкционированное повторное использование текста в творческих отраслях.

Общие вызовы и решения

Проблема 1: ОКР признание ошибок

Решение: Используйте высококачественные сканирования и тонные границы сходства.

Проблема 2: Большие архивы

Решение: Процесс предварительного индекса или комплекта, при необходимости паралелизуйте.

Проблема 3: языковые или форматируемые варианты

**Решение: ** Нормализовать текст (низкий случай, удалить словосочетание), процесс по языковой настройке.

Рассмотрим производительность

  • Вычисления сходства текста являются компьютерно-интенсивными для больших комплектов — бач и график.
  • Зарегистрируйте все результаты для обзора и аудита

Лучшие практики

  • Подтвердить флагманские результаты с помощью руководящего или комиссионного обзора
  • Ограничения сходства для точности vs. фальшивых положительных
  • Архивировать все записи для соответствия и аудита
  • Используйте структурированную текстовую нормализацию

Развитые сценарии

Сценарий 1: Визуализация результатов сходства

Создайте графы или графики из CSV с помощью инструментов Excel или BI.

Сценарий 2: Интеграция API для сканирования в режиме реального времени

Скачать изображения при загрузке и обеспечить немедленную обратную связь с аналогией.

Заключение

ASPOSE.OCR Image Text Finder для .NET позволяет масштабировать, автоматизировать обнаружение подобного или плагинированного контента в изображениях, необходимых для академических, юридических и публикационных работ.

See ASPOSE.OCR для .NET API Для более продвинутого сравнения и поиска АПИ.

 Русский