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

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

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

Реальні проблеми світу

Ручне виявлення подвійного або копійованого тексту в сканованих зображеннях є неефективним і без помилок.Автоматичне порівняння, спрямоване на OCR, дозволяє розмір і повторення для академічних, бізнес- або юридичних потреб.

Огляд рішення

Витягніть текст з кожного зображення і порівнюйте його з корпусом або цільовим набором для високої схожісті.

Передумови

  • Visual Studio 2019 або вище
  • .NET 6.0 або вище (або .Net Framework 4.6.2+)
  • ASPOSE.OCR для .NET від NuGet
PM> Install-Package Aspose.OCR

Крок за кроком реалізація

Крок 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: Визнання помилок OCR

Рішення: Використовуйте високоякісні скани та тонні пороги подібності.

Проблема 2: Великі архівні комплекти

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

Виклик 3: Мова або форматинг варіанти

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

Виконання розглядів

  • Розрахунки текстової подібності є обчислювально-інтенсивними для великих комплектів — бач і графік
  • Зареєструйте всі результати для перевірки та аудиту

Найкращі практики

  • Затверджуйте знамениті результати за допомогою ручного або комісійного огляду
  • Визначити межі подібності для точності vs. фальшивих позитивних
  • Архівуйте всі записи для дотримання та аудиту
  • Використання структурної текстової стандартизації

Розширені сценарії

Сценарій 1: Візуальні результати

Створіть діаграми або графіки з вашого CSV за допомогою Excel або BI інструментів.

Сценарій 2: Інтеграція API для реального часу сканування подання

Використовуйте зображення під час завантаження і надайте негайні відгуки про подібність.

Заключення

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

See Aspose.OCR для .NET API Референт Для більш передового порівняння та пошуку АПІ.

 Українська