Hur man upptäcker textlikhet och plagiarism i bilder

Hur man upptäcker textlikhet och plagiarism i bilder

Att upptäcka liknande eller plagiatisk text i skannade bilder är viktigt för akademisk integritet, innehållsöversikt och rättsligt skydd. Aspose.OCR Image Text Finder för .NET möjliggör batchdetektion av likhet av innehåll över arkiv eller dokument.

Realvärldsproblem

Manuell upptäckt av duplicerad eller kopierad text i skannade bilder är ineffektiv och felfri. Automatisk OCR-driven jämförelse möjliggör skala och upprepbarhet för akademiska, affärsmässiga eller juridiska behov.

Översikt över lösningen

Extract text från varje bild och jämföra det mot ett corpus eller mål för hög likhet. Flagga och rapportera misstänkta matcher för granskning eller uppföljning.

förutsättningar

  • Visual Studio 2019 eller senare
  • .NET 6.0 eller senare (eller .Net Framework 4.6.2+)
  • Aspose.OCR för .NET från NuGet
PM> Install-Package Aspose.OCR

Steg för steg genomförande

Steg 1: Förbered dina bilder

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

Steg 2: Extrahera text från bilder

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

Steg 3: Jämför för likhet eller duplikation

Använd en enkel textliknande funktion (t.ex. Levenshtein avstånd, Jaccard index) eller en .NET-paket för fuzzy matchning:

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

Steg 4: Log och recension resultat

  • Export misstänkta matcher för mänsklig eller akademisk / juridisk granskning

Steg 5: Ett fullständigt exempel

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

Använd fall och applikationer

Akademisk integritet och plagiarismdetektion

Skär studentansökningar för kopierat innehåll mot arkiverade källor.

Juridisk och kontraktsöversikt

Upptäck återanvändning eller kopiering av ett avtalsspråk i lagskannade dokument.

Innehållsförlag och media

Identifiera duplicering eller obehörig återanvändning av text i kreativa branscher.

Gemensamma utmaningar och lösningar

Utmaning 1: OCR-fel

Lösning: Använd högkvalitativa skanningar och ton likhetsbegränsningar.

Utmaning 2: Stor arkiv

Lösning: Pre-index eller batch process, parallelliseras om det behövs.

Utmaning 3: Språk eller formatering variationer

Lösning: Normalisera text (lowercase, ta bort stoppord), processer per språk uppsättning.

Prestanda överväganden

  • Text likhet beräkningar är datorintensiva för stora uppsättningar – batch och schema
  • Registrera alla resultat för granskning och revision

Bästa praxis

  • Validerar flaggade resultat med manuell eller kommittéöversikt
  • Lämna likhetsbegränsningar för noggrannhet vs. falska positiva
  • Arkivera alla loggar för överensstämmelse och revision
  • Använd strukturerad text normalisering

Avancerade scenarier

Scenario 1: Visualisera liknande resultat

Skapa diagram eller grafik från din CSV med hjälp av Excel eller BI-verktyg.

Scenario 2: API-integration för realtidsscanning

Skär bilder när du laddar upp och ger omedelbar likhet feedback.

slutsatser

Aspose.OCR Image Text Finder för .NET möjliggör skalbar, automatiserad upptäckt av liknande eller plagiatiskt innehåll i bilder – väsentliga för akademiska, juridiska och publiceringsarbetsflöden.

See Aspose.OCR för .NET API Referens För mer avancerad jämförelse och sökning APIs.

 Svenska