如何在图像中检测文本类似性和普拉吉亚主义

如何在图像中检测文本类似性和普拉吉亚主义

在扫描图像中检测类似或混乱的文本对学术完整性、内容审查和法律保护至关重要。

现实世界问题

扫描图像中的重复或复制文本的手动检测是无效和错误的。 自动 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:大档案集

** 解決方案:** Pre-index 或 batch 過程,如果需要,並行。

挑战3:语言或格式变量

** 解決方案:** 標準化文本(下載案例,移除停止詞),按語言設定進行過程。

绩效考虑

  • 文本类似性计算对大集进行计算强度 - 集合和时间表
  • 记录所有评论和审计结果

最佳实践

  • 通过手册或委员会审查验证标志性结果
  • 对准确性与虚假积极的相似性限制
  • 存档所有符合和审计的记录
  • 使用结构化文本正常化

先进的场景

场景1:视觉类似性结果

使用 Excel 或 BI 工具从 CSV 中创建图表或图形。

场景2:实时提交扫描的API集成

在上传时显示图像并提供即时相似性反馈。

结论

Aspose.OCR Image Text Finder for .NET 允许在图像中可扩展、自动检测类似或混乱的内容,这对学术、法律和出版工作流至关重要。

See ASPOSE.OCR 为 .NET API 参考 更先进的比较和搜索API。

 中文