Automatizarea auditurilor de cuvinte cheie pentru arhivele imaginii asigură că datele dvs. vizuale sunt etichetate în mod constant și ușor de găsit. cu Aspose.OCR pentru .NET, puteți citi textul încorporat/vizibil din imagini și să-l validați împotriva unei liste controlate a cuvintelor-cheie - apoi raportați ceea ce lipsește. acest ghid îmbunătățește fluxul de lucru cu pași concrete, rulabile care corespund gist la sfârșit, plus ameliorări opționale pentru programare, raportare și întreținere.

Exemplu complet

Prevederile

    • .NET 8 (sau .Net 6+) * SDK este instalat.
  • NuGet acces la instalare Aspose.OCR.
  • Un folder de imagini pentru audit (de exemplu, C:\Path\To\ImageArchive).
  • (Opțional) Un fișier de licență Aspose dacă intenționați să depășiți limitele de evaluare.

Creați proiectul & adăugați pachete

dotnet new console -n ImageArchiveKeywordAudit -f net8.0
cd ImageArchiveKeywordAudit
dotnet add package Aspose.OCR

Pasul 1 – Pregătiți lista cuvintelor cheie

Decideți ce cuvinte cheie canonice ar trebui să conțină imaginile dvs. În gist, cuvintele chei sunt hardcodate pentru simplitate:

// Exact shape used in the gist
List<string> keywords = new List<string>
{
    "mountains", "beaches", "forests", "landscape"
};

Tip (opțional): Închideți cuvintele cheie în keywords.txt (una pe linie) şi încărcaţi-le în List<string> în timp util pentru a evita recompilarea.

Pasul 2 – Inițializarea Aspose.OCR și scanarea arhivelor

Împărtășește ghidul: creați un motor OCR, listați imagini, fiecare fișier O CR și verificați prezența cuvintelor cheie.

using System;
using System.Collections.Generic;
using System.IO;
using Aspose.Ocr;

namespace ImageArchiveKeywordAudit
{
    class Program
    {
        static void Main(string[] args)
        {
            // Path to the image archive directory (edit to your folder)
            string imageDirectory = @"C:\Path\To\ImageArchive";

            // Keyword list for auditing (matches the gist approach)
            List<string> keywords = new List<string>
            {
                "mountains", "beaches", "forests", "landscape"
            };

            // Initialize Aspose.OCR API (license is optional)
            // new License().SetLicense("Aspose.Total.lic");
            using (AsposeOcr api = new AsposeOcr())
            {
                // Process each JPG in the directory (same filter style as the gist)
                foreach (string imagePath in Directory.GetFiles(imageDirectory, "*.jpg"))
                {
                    // Extract text from the image
                    string extractedText = api.RecognizeImageFile(imagePath);

                    // Audit the extracted text against the keyword list
                    bool containsKeywords = AuditText(extractedText, keywords);

                    // Output the results
                    Console.WriteLine($"Image: {imagePath} - Contains Keywords: {containsKeywords}");
                }
            }
        }

        // Method to audit extracted text against a list of keywords (as in gist)
        static bool AuditText(string text, List<string> keywords)
        {
            foreach (string keyword in keywords)
            {
                if (text.Contains(keyword, StringComparison.OrdinalIgnoreCase))
                {
                    return true;
                }
            }
            return false;
        }
    }
}

Pasul 3 – Extindeți auditul (opțional, dar recomandat)

Puteți îmbunătăți raportarea și filtrarea, păstrând același nucleu OCR.

3.a Tipuri multiple de imagini de filtrare

// Replace the single GetFiles with this multi-pattern approach
string[] patterns = new[] { "*.jpg", "*.jpeg", "*.png", "*.tif", "*.tiff", "*.bmp" };
var imageFiles = new List<string>();
foreach (var pattern in patterns)
    imageFiles.AddRange(Directory.GetFiles(imageDirectory, pattern, SearchOption.TopDirectoryOnly));

3.b Capture care cuvinte cheie se potrivesc / lipsește

// After OCR:
var matched = new List<string>();
var missing = new List<string>();

foreach (var k in keywords)
    (extractedText.IndexOf(k, StringComparison.OrdinalIgnoreCase) >= 0 ? matched : missing).Add(k);

Console.WriteLine($"Image: {Path.GetFileName(imagePath)} | Matched: [{string.Join(", ", matched)}] | Missing: [{string.Join(", ", missing)}]");

3.c Scrieți un raport CSV

string reportPath = Path.Combine(imageDirectory, "audit-report.csv");
bool writeHeader = !File.Exists(reportPath);

using (var sw = new StreamWriter(reportPath, append: true))
{
    if (writeHeader)
        sw.WriteLine("Image,ContainsKeywords,Matched,Missing");

    sw.WriteLine($"\"{Path.GetFileName(imagePath)}\",{matched.Count > 0},\"{string.Join(";", matched)}\",\"{string.Join(";", missing)}\"");
}

Pasul 4 – Run din PowerShell sau Batch

Creați un runner PowerShell simplu run-audit.ps1:

# Adjust paths as needed
$solutionRoot = "C:\Path\To\ImageArchiveKeywordAudit"
$imageDir     = "C:\Path\To\ImageArchive"

# Build and run
dotnet build "$solutionRoot" -c Release
& "$solutionRoot\bin\Release\net8.0\ImageArchiveKeywordAudit.exe"

Opțional: Dacă modificați programul pentru a accepta argumente, rulați-l ca:ImageArchiveKeywordAudit.exe "C:\Images" "C:\keywords.txt"

Pasul 5 – Programul de audit repetat (Windows Task Scheduler)

Utilizarea schtasks Pentru a rula zilnic la 2am:

schtasks /Create /TN "ImageKeywordAudit" /TR "\"C:\Path\To\ImageArchiveKeywordAudit\bin\Release\net8.0\ImageArchiveKeywordAudit.exe\"" /SC DAILY /ST 02:00

Înregistrare de ieșire la fișier prin înfășurarea comenzii în a .cmd care redirecționează stdout/stderr:ImageArchiveKeywordAudit.exe >> C:\Path\To\Logs\audit-%DATE%.log 2>&1

Cele mai bune practici

  • **Să păstrați o sursă canonică a cuvintelor cheie.**Salvați lista dvs. în Git sau într-un CMDB; revizuiți trimestrial.
  • Normalize OCR text. Trim spațiu alb, unify hyphens și Unicode look-alikes înainte de a se potrivi.
  • Tune performanță. Batch prin dosare; adăugați paralelism numai după măsurarea I/O și CPU.
  • Calitate în, calitate în. Scanurile curate (descă / denoiză) îmbunătățesc semnificativ ratele meciurilor.
  • Audit scope. Considerați seturi de cuvinte cheie separate pentru fiecare colecție (de exemplu, „landscape”, „produs“, „formă”).
  • Traceabilitate. Păstrați rapoartele CSV cu marcajele de timp pentru schimbarea istoriei și difuzarea rapidă.

Troubleshooting

  • Ocurs OCR gol: Verificați orientarea și contrastul imaginii; încercați un alt format (*.png, *.tif).
  • ** Negativele false:** Adăugați variante plurale / vocale sau sinonimuri la lista dvs. (de exemplu, „beach”, „Beaches”).
  • Probleme de trimitere: Limită cursurile concurențiale; evita scanarea acțiunilor de rețea prin link-uri lente.

More in this category