Kuinka tunnistaa tekstin samankaltaisuus ja plagiarismi kuvissa
Samankaltaisen tai plagiarisoidun tekstin havaitseminen skannatuissa kuvissa on tärkeää akateemisen eheyden, sisällön tarkastelun ja oikeudellisen suojelun kannalta. Aspose.OCR Image Text Finder for .NET mahdollistaa sisältöjen samankaltaisuuden tunnistamisen arkistoissa tai asiakirjojen kokouksissa.
Reaalimaailman ongelma
Skannattujen kuvien kaksinkertaisen tai kopioidun tekstin manuaalinen havaitseminen on tehottomaa ja virheellistä. Automaattinen OCR-ohjattu vertailu mahdollistaa mittakaavan ja toistettavuuden akateemisille, liiketoiminnallisille tai oikeudellisille tarpeille.
Ratkaisun yleiskatsaus
Poista teksti kunkin kuvan ja vertaile sitä korpus tai kohderyhmä korkean samankaltaisuuden. lippu ja raportointi epäilyttävät ottelut tarkastelua tai seurantaa.
edellytykset
- Visual Studio 2019 tai uudempi
- .NET 6.0 tai uudempi (tai .Net Framework 4.6.2+)
- ASPOSE.OCR for .NET alkaen NuGet
PM> Install-Package Aspose.OCR
Vaiheittainen toteutus
Vaihe 1: Valmista kuvan kokoelmasi
string[] archiveFiles = Directory.GetFiles("./archive", "*.png");
string[] submissionFiles = Directory.GetFiles("./submissions", "*.png");
Vaihe 2: Poista teksti kuvista
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;
}
Vaihe 3: Vertaa samankaltaisuutta tai kopiointia
Käytä yksinkertaista tekstin samankaltaisuuden toimintoa (esim. Levenshteinin etäisyys, Jaccard-indeksi) tai .NET-pakettia fuzzy matching:
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;
}
Vaihe 4: Rekisteröinti ja tarkastelu tulokset
- Tuonti epäiltyjä otteluita ihmisen tai akateemisen / oikeudellisen tarkastelun
Vaihe 5: Täydellinen esimerkki
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;
}
}
Käytä tapauksia ja sovelluksia
Akateeminen koskemattomuus ja plagiarismin havaitseminen
Näytä opiskelijan esitykset kopioitua sisältöä vastaan arkistoituja lähteitä.
Lain ja sopimuksen tarkastelu
Tunnista sopimuskielen uudelleenkäyttö tai kopiointi laillisesti skannattuihin dokumenteihin.
Sisällön julkaiseminen ja media
Tunnistaa tekstin kopiointi tai luvattoman uudelleenkäytön luovaan teollisuuteen.
Yhteiset haasteet ja ratkaisut
Haaste 1: OCR:n tunnistamisvirheet
** Ratkaisu:** Käytä korkealaatuisia skannereita ja tunnen samankaltaisuusrajoja.
Haaste 2: Suuret arkistot
** Ratkaisu:** Pre-index tai batch prosessi, rinnakkain tarvittaessa.
Haaste 3: Kielen tai muotoilun vaihtelut
** Ratkaisu:** Normalisoida teksti (lowercase, poistaa pysähdys sanoja), prosessi kielen mukaan.
suorituskyvyn huomioon ottaminen
- Tekstin samankaltaisuuden laskelmat ovat laskennallisesti intensiivisiä suurille kokouksille – taistelu ja aikataulu
- Rekisteröi kaikki tulokset tarkastukseen ja auditointiin
Parhaat käytännöt
- Validoi merkittyjä tuloksia manuaalisella tai komitean tarkistuksella
- Samankaltaisuuden kynnysarvot tarkkuuden vs. väärien positiivisten
- arkistoi kaikki arkistot vaatimustenmukaisuuden ja tarkastuksen osalta
- Käytä rakenteellista tekstien normalisointia
Edistyneet skenaariot
Käsikirja 1: Näytä samankaltaisuus tulokset
Luo kaavioita tai grafiikoita CSV: stä käyttämällä Excel- tai BI-työkaluja.
Skenaario 2: API: n integrointi reaaliaikaiseen lähetyksen tarkistamiseen
Näytä kuvan lataamisen jälkeen ja tarjoa välitön samankaltaisuuden palautetta.
johtopäätöksiä
Aspose.OCR Image Text Finder for .NET mahdollistaa samankaltaisen tai plagiarisoidun sisällön asteittaisen ja automaattisen havaitsemisen kuvissa, jotka ovat välttämättömiä akateemisten, oikeudellisten ja julkaisutoimintojen kannalta.
See ASPOSE.OCR .NET API-referenssille Edistyksellisempi vertailua ja hakua APIs.