画像におけるテキスト類似性とプラジアリズムを検出する方法
スキャンされた画像で類似またはプラジア化されたテキストを検出することは、学術的完全性、コンテンツレビュー、および法的保護のために重要です。
現実世界問題
スキャンされた画像における複製またはコピーされたテキストの手動検出は効率的でエラー防止です 自動 OCR による比較は、学術、ビジネス、または法的ニーズのためのスケールおよび繰り返し性を可能にします。
ソリューション概要
各画像からテキストを抽出し、高類似性のためのコルプスまたはターゲットセットと比較します。
原則
- Visual Studio 2019 以降
- .NET 6.0 またはそれ以降(または .Net Framework 4.6.2+)
- ASPOSE.OCR for .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 パッケージを使用して、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;
}
ステップ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:OKR認定エラー
ソリューション: 高品質のスキャンとトーン類似性の限界を使用します。
チャレンジ2:大型アーカイブセット
**ソリューション:**プレインデックスまたはバッチプロセス、必要に応じてパラレル化します。
課題3:言語またはフォーマットの変数
ソリューション: テキストを標準化する(下のケース、停止単語の削除)、言語セットごとに処理します。
パフォーマンス考慮
- テキスト類似性計算は、大セット(バッチとスケジュール)のためのコンピュータ強度です。
- すべてのレビューと監査の結果を記録する
ベストプラクティス
- マニュアルまたは委員会レビューで表示された結果を確認する
- 正確性対偽ポジティブに対する類似性の限界を設定する
- アーカイブ すべての記録 遵守および監査
- 構造化テキスト標準化
高度なシナリオ
シナリオ1:類似性の結果を見る
Excel または BI ツールを使用して CSV からグラフやグラムを作成します。
シナリオ2:リアルタイムの送信スクリーニングのためのAPI統合
アップロード時に画像を表示し、直ちに類似性のフィードバックを提供します。
結論
ASPOSE.OCR Image Text Finder for .NET は、学術、法的、出版作業の流れに不可欠な画像に類似またはプラジア化されたコンテンツをスケール可能で自動的に検出することを可能にします。
See ASPOSE.OCR for .NET API リファレンス より先進的な比較と検索のためのAPI。