API رایگان تشخیص نوری کاراکتر برای نسخههای خطی چینی
OCR منبع باز C++ برای انجام عملیات OCR بر روی نسخههای خطی چینی با استفاده از تطبیق مبتنی بر قالب، بهطوری که کاراکترها بهصورت پیکسل به پیکسل با نمونههای شناختهشده مقایسه میشوند.
OCR رایگان C++ چیست؟
تشخیص نوری کاراکتر (OCR) در اسکریپتهای غیر لاتین—بهویژه چینی—بهدلیل پیچیدگی و تنوع کاراکترها چالشهای منحصر بهفردی دارد. خوشبختانه، API OCR منبع باز C++ توسط Sebastian Starke یک راهحل تمیز و قابل گسترش ارائه میدهد که برای شناسایی کاراکترهای چاپی یا دستنویس چینی، بهویژه از منابع نسخههای خطی، بهینهسازی شده است. این API سبک وزن با تمرکز بر سادگی و سازگاری، به توسعهدهندگان نرمافزار امکان میدهد با استفاده از روشهای کلاسیک پردازش تصویر بهجای مدلهای سنگین یادگیری ماشین، بر شناسایی کاراکترها آزمایش کنند.
این پروژه یک موتور عصبی OCR کامل مانند Tesseract نیست. در عوض، مسیر متفاوتی را پیش میگیرد: از تطبیق مبتنی بر قالب استفاده میکند، بهطوری که کاراکترها بهصورت پیکسل به پیکسل با نمونههای شناختهشده مقایسه میشوند. این ویژگی آن را برای استفاده آموزشی، محیطهای کنترلشده یا وظایف شناسایی خاص مانند تحلیل نسخههای خطی تاریخی، قالبهای چاپی سنتی چینی یا مجموعههای داده دستنویس ساده ایدهآل میسازد. این پروژه بهویژه برای توسعهدهندگانی که در محیطهای کممنابع کار میکنند، مانند سیستمهای لینوکس تعبیهشده، Raspberry Pi یا دستگاههای اسکن صنعتی مناسب است، چراکه به وابستگیهای سنگین یا کتابخانههای یادگیری عمیق متکی نیست.
شروع کار با OCR
روش پیشنهادی برای نصب OCR استفاده از GitHub است. لطفاً برای نصب صاف از دستور زیر استفاده کنید.
نصب API OCR از طریق GitHub
نصب API OCR از طریق GitHub
git clone https://github.com/sebastianstarke/OCR.git همچنین میتوانید بهصورت دستی نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از مخزن GitHub دانلود کنید.
موتور OCR مبتنی بر قالب
API منبع باز تشخیص نوری کاراکتر (OCR) در نسخههای خطی چینی بهصورت C++ پشتیبانی کامل برای استفاده از موتور OCR مبتنی بر قالب در برنامههای C++ را فراهم میکند. در قلب این کتابخانه یک سیستم کلاسیک مقایسه تصویر قرار دارد: تصاویر کاراکترها بایناریزه میشوند و سپس با قالبها با استفاده از یک معیار فاصله (معمولاً مقایسه پیکسل به پیکسل) مقایسه میشوند. برای چینی این روش بهویژه زمانی مفید است که با خوشنویسی یا نسخههای چاپی ثابت سروکار داشته باشید.
چگونه در برنامههای C++ از OCR مبتنی بر قالب استفاده کنیم؟
OCR::TemplateCollection templates;
templates.loadFromFolder("templates/"); // Load preprocessed characters
OCR::Recognizer recognizer(templates);
std::string recognizedText = recognizer.recognizeFromImage("scanned_page.png");
پشتیبانی پیشپردازش تصویر
کتابخانه OCR منبع باز پشتیبانی کامل برای عملکرد پیشپردازش تصویر در برنامههای C++ ارائه میدهد. این کتابخانه پیشپردازش پایهای مانند آستانهگذاری و برش را برای تمیز کردن ورودیهای پرنویز فراهم میکند. نسخههای خطی چینی اغلب بر روی کاغذهای کهنه نوشته میشوند، بنابراین پاکسازی تصویر برای نتایج دقیق ضروری است. مثال زیر نشان میدهد که چگونه با تنها چند خط کد C++ توسعهدهندگان میتوانند پیشپردازش تصویر را انجام دهند.
چگونه قبل از عملیات OCR در برنامههای C++ پیشپردازش تصویر انجام دهیم؟
OCR::ImageProcessor processor;
cv::Mat cleanImage = processor.binarize("raw_scan.png");
پشتیبانی از تبدیلات مورفولوژیک
فرآیند با مجموعهای از تبدیلات مورفولوژیک آغاز میشود. اینها عملیات اساسی پردازش تصویر هستند که شکل هندسی ویژگیها را در تصویر تغییر میدهند. در این زمینه، برای تمیز کردن تصویر نسخه خطی، حذف نویز و آمادهسازی کاراکترها برای تقسیمبندی استفاده میشوند.