کتابخانهٔ رایگان جاوااسکریپت برای استخراج متن از تصاویر و فرمهای اسکنشده
کتابخانهٔ منبع باز تشخیص نوری کاراکتر (OCR) با جاوااسکریپت برای استخراج متن از تصاویر و اسناد اسکنشدهٔ سیاه-و-سفید با پیشپردازش تصویر و پشتیبانی از قالبها در وب یا برنامههای Node.js.
در دنیای دیجیتال مدرن، فناوری تشخیص نوری کاراکتر (OCR) نقش حیاتی در تبدیل تصاویر اسکنشده، یادداشتهای دستنویس یا اسناد چاپی به دادههای قابل ویرایش و جستجو ایفا میکند. برای توسعهدهندگان JavaScript که به دنبال راهحل سبک و متنباز هستند، Guten OCR گزینهای جذاب ارائه میدهد. این موتور OCR مبتنی بر JavaScript با تمرکز بر سادگی طراحی شده است و برای ادغام ویژگیهای OCR مستقیماً در برنامههای مبتنی بر مرورگر یا Node.js ایدهآل میباشد. چندین ویژگی مهم در این کتابخانه وجود دارد، از جمله تشخیص کاراکتر با استفاده از الگوها، آستانهگذاری و باینریسازی تصویر، تقسیم کاراکتر، تطبیق الگو و ترکیب متن، پشتیبانی از کدبیس مدولار و غیره. این کتابخانه بر تشخیص متن چاپی از اسناد اسکنشده سیاه‑سفید تمرکز دارد و برای متون بهخوبی قالببندیشده مانند کتابها یا فرمها مناسبترین است.
Guten OCR یک موتور OCR متنباز جاوااسکریپت است که توسط Gutenye ایجاد شده است. برخلاف ابزارهای OCR سنگین که نیاز به وابستگیهای خارجی یا تنظیمات گسترده دارند، Guten OCR کاملاً بهصورت جاوااسکریپت نوشته شده است، به این معنی که میتواند در مرورگر وب یا روی سرور با Node.js اجرا شود. این کتابخانه از تکنیکهای پایه پردازش تصویر برای تقسیم کاراکترها و شناسایی آنها با استفاده از یک سیستم تشخیص الگوی کاراکتر استفاده میکند. اگرچه هنوز ممکن است در مقایسه با موتورهای OCR تجاری مانند Tesseract از نظر پشتیبانی از چندزبانه یا متن دستنویس رقابتی نباشد، سادگی و قابلیت هکپذیری آن آن را به گزینهای فوقالعاده برای پروژههای آموزشی، اثبات مفهوم یا ویژگیهای OCR تعبیهشده در برنامههای وب سفارشی تبدیل میکند. برخلاف Tesseract یا سایر موتورهای بزرگتر، Guten OCR عمداً سبک وزن و متمرکز است—که آن را نقطه شروع عالی برای کسانی میسازد که میخواهند درک کنند OCR چگونه زیر سطح کار میکند.
شروع کار با Guten OCR
روش پیشنهادی برای نصب Guten OCR استفاده از Brew است. لطفاً برای نصب روان از دستور زیر استفاده کنید
نصب Guten OCR از طریق Brew
brew install git-lfs نصب Guten OCR از طریق GitHub
git clone git@github.com:gutenye/ocr.git همچنین میتوانید آن را بهصورت دستی نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از مخزن GitHub دانلود کنید.
پیشپردازش تصویر قبل از عملیات OCR
کتابخانه متنباز Guten OCR کاملاً به زبان جاوااسکریپت نوشته شده است، بهطوری که با هر دو محیط مرورگر و Node.js سازگار باشد. این کتابخانه شامل توابع پیشپردازش تصویر داخلی برای افزایش دقت تشخیص است. از باینریسازی تصویر (تبدیل به سیاه و سفید)، کاهش نویز، تصحیح انحراف و موارد دیگر پشتیبانی میکند. مثال زیر نشان میدهد که توسعهدهندگان چگونه میتوانند چندین مرحله پیشپردازش تصویر را قبل از انجام عملیات OCR بر روی تصاویر اعمال کنند.
چگونه پیشپردازش تصویر را قبل از عملیات OCR با استفاده از کتابخانه JavaScript اعمال کنیم؟
const { preprocess } = require('guten-ocr');
// Apply multiple preprocessing steps
const processedImage = preprocess(imageData, [
'grayscale', // Convert to grayscale
'binarize', // Convert to black and white
'deskew', // Correct skew
'denoise' // Reduce noise
]);
// Then perform OCR on the processed image
ocr.recognize(processedImage).then(/* ... */);
تشخیص کاراکتر از طریق قالبها
کتابخانهٔ جاوااسکریپت Guten OCR پشتیبانی کامل برای انجام عملیات OCR با استفاده از قالبها در برنامههای جاوااسکریپت فراهم کرده است. در قلب Guten OCR یک سیستم تطبیق قالب وجود دارد. به جای آموزش یک مدل یادگیری ماشین، از الگوهای پیشتعریفشدهٔ کاراکتر استفاده میکند. این باعث میشود سیستم سریعتر و فهمپذیرتر باشد، اما نسبت به سازگاری فونت و چیدمان حساستر است. برای انجام این کار، کتابخانه هر کاراکتر (A–Z، a–z، 0–9، و غیره) را در یک بوم (canvas) رندر میکند و سپس ماتریس باینری هر کاراکتر به عنوان قالب مرجع میشود. هنگام تحلیل یک تصویر، کتابخانه بخشهای تصویر را با این قالبها مقایسه میکند تا بهترین تطبیق را پیدا کند. این کار را با ترکیبی از اسکن خطوط عمودی و افقی برای یافتن جعبههای محدودکننده انجام میدهد.
تقسیم کاراکتر از طریق کتابخانه OCR
کتابخانهٔ منبع باز جاوااسکریپت Guten OCR به توسعهدهندگان نرمافزار امکان میدهد تا به راحتی تقسیمبندی کاراکترها را انجام دهند. پس از باینریسازی تصویر، گام بعدی تقسیم کاراکترهای منفرد است. Guten OCR ردیفها و ستونها را اسکن میکند تا نواحی با پیکسلهای سیاه متراکم را شناسایی کرده و آنها را به کاراکترهای احتمالی جدا کند. مثال زیر نشان میدهد که چگونه توسعهدهندگان نرمافزار میتوانند با استفاده از کتابخانهٔ OCR جاوااسکریپت، تقسیمبندی کاراکترها را انجام دهند.
چگونه تقسیم کاراکتر را با استفاده از کتابخانه JavaScript انجام دهیم؟
const segment = require('guten-ocr/segment');
const boxes = segment(binarized); // returns array of [x, y, width, height]