Como detectar semelhança de texto e plagiarismo em imagens

Como detectar semelhança de texto e plagiarismo em imagens

Detecção de texto semelhante ou plagiarizado em imagens escaneadas é importante para a integridade acadêmica, revisão de conteúdo e proteção legal. Aspose.OCR Image Text Finder para .NET permite a deteção batch de semelhança do conteúdo em arquivos ou conjuntos de documentos.

Problemas do mundo real

Detecção manual de texto duplicado ou copiado em imagens escaneadas é ineficaz e errado. Comparação automatizada conduzida por OCR permite escala e repetibilidade para necessidades acadêmicas, empresariais ou legais.

Solução Overview

Extrair texto de cada imagem e compará-lo contra um corpus ou meta para uma alta semelhança.

Pré-requisitos

  • Visual Studio 2019 ou posterior
  • .NET 6.0 ou posterior (ou .Net Framework 4.6.2+)
  • Aspose.OCR para .NET de NuGet
PM> Install-Package Aspose.OCR

Implementação passo a passo

Passo 1: Prepare suas imagens

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

Passo 2: extrair texto das imagens

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

Passo 3: Compare para Similaridade ou Duplação

Use uma função de semelhança de texto simples (por exemplo, a distância de Levenshtein, o índice Jaccard) ou um pacote .NET para combinar 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;
}

Passo 4: Log e Revisão Resultados

  • Exportação de jogos suspeitos para avaliação humana ou acadêmica/legal

Passo 5: Exemplo completo

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

Use Casos e Aplicações

Integridade Acadêmica e Detecção de Plagiarismo

Exibir apresentações de estudantes para conteúdos copiados contra fontes arquivadas.

Revisão legal e contratual

Detectar reutilização ou cópia da língua contratual em documentos legalmente escaneados.

Publicação de conteúdo e mídia

Identificar duplação ou reutilização não autorizada de texto em indústrias criativas.

Desafios comuns e soluções

Título 1: Erros de reconhecimento do OCR

** Solução:** Use escaneamentos de alta qualidade e limites de semelhança tonal.

Título 2: Grandes Arquivos

** Solução: ** Pre-index ou processo de batch, paralelize se necessário.

3o desafio: linguagem ou variações de formatação

** Solução: ** Normalize texto (caso inferior, remova palavras de parada), processamento por set de idioma.

Considerações de desempenho

  • Os cálculos de semelhança de texto são computacional-intensos para grandes conjuntos – batch e calendário
  • Registre todos os resultados para revisão e auditoria

Melhores Práticas

  • Validar os resultados marcados com manual ou revisão da comissão
  • Tune os limites de semelhança para a precisão vs. falsos positivos
  • Arquivo de todos os logs para conformidade e auditoria
  • Use a normalização de texto estruturado

Os cenários avançados

Scenário 1: Visualize resultados de semelhança

Crie diagramas ou gráficos do seu CSV usando ferramentas do Excel ou BI.

Escenário 2: Integração de API para Screening de Envio em Tempo Real

Exibir imagens ao carregar e fornecer feedback de semelhança instantânea.

Conclusão

Aspose.OCR Image Text Finder para .NET permite a detecção escalável, automatizada de conteúdo semelhante ou plagiarizado em imagens – essencial para fluxos de trabalho acadêmicos, legais e de publicação.

See Aspose.OCR para .NET API Referência Para comparação mais avançada e pesquisa APIs.

 Português