في العصر الرقمي اليوم، وقدرة على استخراج النص من الصور أصبحت مهمة بشكل متزايد، سواء كنت تتعامل مع مستندات الفحص، بطاقات الأعمال، أو أي شكل آخر من البيانات القائمة على الصورة، والقدرة على البحث والتلاعب بهذه المعلومات بفعالية يمكن أن توفر الكثير من الوقت والجهد. Aspose.OCR و ASP.NET Core التي تسمح للمستخدمين بتحميل الصور، والبحث عن الكلمات الرئيسية المحددة داخل النص المستخرج، ومشاهدة النتائج في الوقت الحقيقي مع المباريات المميزة.
مصدر الحقيقة : يتم توحيد الرمز والرصاص أدناه مع الرماد في نهاية هذه المقالة (نقاط التحكم النهائية ،,
AsposeOcrاستخدام، وشكل استجابة JSON).
مثال كامل
المعايير
- .إعادة التأهيل - يرجى التعامل مع المشاكل التالية: الخطأ (يجب تصحيحه): 1.مربع الأمامية ‘seoTitle’ تم اكتشافها على أنها ’en’ (ثقة 100٪) ، متوقعة ‘ar’.مشاهدة مسبقة: ‘Aspose.OCR مع AWS S3: Cloud OCR Tutorial’ المصدر النص: .NET 8 (أو .NET 6+) SDK مثبتة.
- Visual Studio / رمز
- الوصول إلى
Aspose.OCR - إعادة التأهيل - يرجى التعامل مع المشاكل التالية: الأخطاء (يجب تصحيحها): 1.مربع الأمامية ‘seoTitle’ تم اكتشافها على أنها ’en’ (ثقة 100٪)، متوقعة ‘ar’.مشاهدة: ‘Aspose.OCR مع AWS S3: Cloud OCR Tutorial’ النص المصدر: (اختياري) Aspose ملف الترخيص إذا كنت ترغب في تشغيل خارج التقييم.
الخطوة 1: إنشاء مشروع ASP.NET Core MVC
dotnet new mvc -n ImageTextSearchApp -f net8.0
cd ImageTextSearchApp
# Add Aspose.OCR
dotnet add package Aspose.OCR
لماذا MVC؟? يُستخدم المستخدم (HomeController(الصورة) ، وجهات النظر ، والكلاسيكية Startup- نموذج سهل ومعروف لترقية الملفات + OCR على جانب الخادم.
الخطوة 2: إعداد الأصول الثابتة وتحميل الملف
يكتب المدير الضوء تحت wwwroot/uploads.قم بإنشاء هذه المجلدات والتأكد من أن التطبيق يمكن أن يكتب لها.
mkdir -p wwwroot/uploads
كما أن الملفات الثابتة في
Startup(وما كان منهم إلا ما كانوا يعملون)wwwrootيتم تقديم الشجرة بشكل صحيح.
الخطوة 3: إضافة التحكم (تحميل + OCR + البحث)
خلق الرئيسية / HomeController.cs وتنفيذ Index + SearchText هذا الإجراء يحفظ الصورة التي تم تحميلها ، ويقوم بتنفيذ OCR ، ويبحث عن كلمة رئيسية (غير حساسة للكلمة) ، ويعيد JSON.
using System;
using System.IO;
using System.Threading.Tasks;
using Aspose.Ocr;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace ImageTextSearchApp
{
public class HomeController : Controller
{
private readonly IWebHostEnvironment _environment;
public HomeController(IWebHostEnvironment environment)
{
_environment = environment;
}
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
[RequestSizeLimit(20_000_000)] // ~20MB max, adjust as needed
public async Task<IActionResult> SearchText(IFormFile imageFile, string searchKeyword)
{
if (imageFile == null || imageFile.Length == 0)
return BadRequest("Image file is required.");
if (string.IsNullOrWhiteSpace(searchKeyword))
return BadRequest("Search keyword is required.");
// Ensure uploads directory exists
var uploadsDir = Path.Combine(_environment.WebRootPath, "uploads");
Directory.CreateDirectory(uploadsDir);
// Sanitize filename and save
var safeName = Path.GetFileName(imageFile.FileName);
var filePath = Path.Combine(uploadsDir, safeName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await imageFile.CopyToAsync(stream);
}
// Perform OCR on the uploaded image
using (var ocrEngine = new AsposeOcr())
{
var extractedText = await ocrEngine.RecognizeImageAsync(filePath);
// Case-insensitive keyword check
var found = extractedText?.IndexOf(searchKeyword, StringComparison.OrdinalIgnoreCase) >= 0;
var searchResult = found ? "Keyword found!" : "Keyword not found.";
// Return minimal JSON (exact shape matches the gist)
return Json(new { extractedText, searchResult });
}
}
}
}
ملاحظات
- أضفنا حدود حجم الملف الصغير وخلق دليل لضمان قوة.
- في هذا الصدد، يُعد هذا النوع من الملفات (
.png/.jpg/.jpeg/.tifفكر في فحص الفيروسات.
الخطوة 4: إدخال البرامج والبدء
خلق إعادة التأهيل - يرجى التعامل مع المشاكل التالية: الخطأ (يجب إصلاحه): 1.مربع المادة الأمامية ‘seoTitle’ تم اكتشافه على أنها ’en’ (ثقة 100٪) ، متوقعة ‘ar’.مشاهدة: ‘Aspose.OCR: Image Text Search Web App with ASP.NET Core’ Source TEXT: Startup.cs و برنامج .cs كما هو الحال في الملفات لتسمح MVC، والملفات الثابتة، وتوجيه، و HTTPS إعادة توجيه.
إعادة التأهيل - يرجى التعامل مع المشاكل التالية: الخطأ (يجب إصلاحه): 1.مربع المادة الأمامية ‘seoTitle’ تم اكتشافه على أنها ’en’ (ثقة 100٪) ، متوقعة ‘ar’.مشاهدة: ‘Aspose.OCR: Image Text Search Web App with ASP.NET Core’ Source TEXT: Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace ImageTextSearchApp
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles(); // serves wwwroot (including /uploads)
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
برنامج .cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace ImageTextSearchApp
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
الخطوة 5: بناء واجهة الاتصال + البحث (Razor View)
خلق مشاهدة / الصفحة الرئيسية / Index.cshtml مع نموذج تحميل بسيط ومربع البحث. يكتب جاكرتا الملف + كلمة مفتاح إلى /Home/SearchText, طباعة النص OCR, وتسليط الضوء على التنافسات في المتصفح (لا تحتاج إلى تغييرات الخادم).
@{
ViewData["Title"] = "Image Text Search";
}
<h1 class="mb-3">Image Text Search (Aspose.OCR + ASP.NET Core)</h1>
<form id="ocrForm" enctype="multipart/form-data" class="mb-4">
<div class="form-group mb-2">
<label for="imageFile">Select image</label>
<input type="file" id="imageFile" name="imageFile" accept=".png,.jpg,.jpeg,.tif,.tiff,.bmp" class="form-control" required />
</div>
<div class="form-group mb-2">
<label for="searchKeyword">Keyword</label>
<input type="text" id="searchKeyword" name="searchKeyword" class="form-control" placeholder="Enter a word to find..." required />
</div>
<button type="submit" class="btn btn-primary">Upload & Search</button>
</form>
<div id="result" class="mt-3">
<h3>Result</h3>
<p id="searchStatus" class="fw-bold"></p>
<pre id="extractedText" style="white-space: pre-wrap"></pre>
</div>
@section Scripts {
<script>
(function () {
const form = document.getElementById('ocrForm');
const statusEl = document.getElementById('searchStatus');
const textEl = document.getElementById('extractedText');
function escapeHtml(s) {
return s.replace(/[&<>"']/g, c => ({
'&': '&', '<': '<', '>': '>', '"': '"', "'": '''
}[c]));
}
function highlight(text, keyword) {
if (!keyword) return escapeHtml(text);
const pattern = new RegExp(`(${keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
return escapeHtml(text).replace(pattern, '<mark>$1</mark>');
}
form.addEventListener('submit', async (e) => {
e.preventDefault();
statusEl.textContent = 'Processing...';
textEl.textContent = '';
const formData = new FormData(form);
try {
const res = await fetch('/Home/SearchText', {
method: 'POST',
body: formData
});
if (!res.ok) {
const msg = await res.text();
statusEl.textContent = `Error: ${msg}`;
return;
}
const data = await res.json();
statusEl.textContent = data.searchResult || '';
const kw = document.getElementById('searchKeyword').value;
textEl.innerHTML = highlight(data.extractedText || '', kw);
} catch (err) {
statusEl.textContent = 'Unexpected error. See console.';
console.error(err);
}
});
})();
</script>
}
هذه التطبيقات في الوقت الحقيقي في النص المكتوب كتلة. الرفع الرفع على الصورة سيحتاج OCR نفسه إلى الحدود الصناديق والطلاء (لا تغطيها الرماد).
الخطوة 6: تشغيل التطبيق
dotnet run
افتح عنوان URL المعروض في الكونسول (على سبيل المثال،., https://localhost:5001). تحميل الصورة، إدخال كلمة مفتاحية، ثم انقر فوق تحميل & البحث.سوف ترى :
Keyword found!أوKeyword not found.(المصدر الخادم )- وَالْمَوْت النص المستخرج مع العملاء
<mark>الارتفاع
الخطوة 7: التفكير في الإنتاج الجاهز (اختياري)
- تصديق الملفات: تحقق من أنواع MIME / التمديدات وتفكر في فحص مكافحة الفيروسات.
- الحد الأقصى: الاستخدام
RequestSizeLimit(يظهر) والعكس يقتصر على proxy/web.config حسب الحاجة. - التنظيف:• إزالة الملفات القديمة بانتظام
wwwroot/uploads. - الموقع: إذا كنت بحاجة إلى العديد من اللغات، قم بتعيين خيارات اللغة OCR على جانب الخادم.
- خطأ UX: استبدال التحذيرات بالتوستات ؛ إضافة شرائح التحميل وشرائح التقدم.
حل المشاكل
- نتائج OCR الفارغة: حاول إدخال أعلى جودة أو التوجه الصحيح أو تنسيق مختلف (PNG/TIFF).
- CORS: إذا كان الجبهة منفصلة ، قم بتشغيل CORS واستخدام URL API الكامل.
- HTTPS:أو أن يؤمن بالله (أي بالله)
dotnet dev-certs https --trustإذا كان المتصفح يغلق المحتوى المختلط.