راهنمای کدنویسی برای ساخت یک برنامه تشخیص نوری کاراکتر (OCR) در گوگل کولب با استفاده از OpenCV و Tesseract-OCR

تشخیص نوری کاراکتر (OCR) یک فناوری قدرتمند است که تصاویر متن را به محتوای قابل خواندن توسط ماشین تبدیل می‌کند. با افزایش نیاز به اتوماسیون در استخراج داده‌ها، ابزارهای OCR به بخش اساسی بسیاری از برنامه‌ها تبدیل شده‌اند، از دیجیتالی کردن اسناد گرفته تا استخراج اطلاعات از تصاویر اسکن شده. در این آموزش، ما یک برنامه OCR می‌سازیم که به راحتی در گوگل کولب اجرا می‌شود و از ابزارهایی مانند OpenCV برای پردازش تصویر، Tesseract-OCR برای تشخیص متن، NumPy برای دستکاری آرایه‌ها و Matplotlib برای تجسم استفاده می‌کند. در پایان این راهنما، می‌توانید یک تصویر را بارگذاری کنید، آن را پیش پردازش کنید، متن را استخراج کنید و نتایج را دانلود کنید، همه اینها در یک نوت‌بوک کولب.

برای راه‌اندازی محیط OCR در گوگل کولب، ابتدا Tesseract-OCR، یک موتور تشخیص متن متن‌باز، را با استفاده از apt-get نصب می‌کنیم. همچنین، کتابخانه‌های ضروری پایتون مانند pytesseract (برای رابط با Tesseract)، OpenCV (برای پردازش تصویر)، NumPy (برای عملیات عددی) و Matplotlib (برای تجسم) را نصب می‌کنیم.

? انتشار یافت: گزارش هوش مصنوعی متن باز

در مرحله بعد، کتابخانه‌های لازم برای پردازش تصویر و وظایف OCR را وارد می‌کنیم. OpenCV (cv2) برای خواندن و پیش پردازش تصاویر استفاده می‌شود، در حالی که pytesseract یک رابط برای موتور Tesseract OCR برای استخراج متن فراهم می‌کند. NumPy (np) به دستکاری آرایه‌ها کمک می‌کند و Matplotlib (plt) تصاویر پردازش شده را تجسم می‌کند. ماژول files گوگل کولب به کاربران اجازه می‌دهد تا تصاویر را بارگذاری کنند و PIL (Image) تبدیل تصاویر مورد نیاز برای پردازش OCR را تسهیل می‌کند.

برای پردازش یک تصویر برای OCR، ابتدا باید آن را در گوگل کولب بارگذاری کنیم. تابع files.upload() از ماژول files گوگل کولب کاربران را قادر می‌سازد تا یک فایل تصویر را از سیستم محلی خود انتخاب و بارگذاری کنند. فایل بارگذاری شده در یک فرهنگ لغت ذخیره می‌شود که نام فایل به عنوان کلید است. ما نام فایل را با استفاده از list(uploaded.keys())[0] استخراج می‌کنیم که به ما امکان می‌دهد در مراحل بعدی به تصویر بارگذاری شده دسترسی پیدا کرده و آن را پردازش کنیم.

برای بهبود دقت OCR، ما یک تابع پیش پردازش اعمال می‌کنیم که کیفیت تصویر را برای استخراج متن افزایش می‌دهد. تابع preprocess_image() ابتدا تصویر بارگذاری شده را با استفاده از OpenCV (cv2.imread()) می‌خواند و با استفاده از cv2.cvtColor() آن را به مقیاس خاکستری تبدیل می‌کند، زیرا تصاویر مقیاس خاکستری برای OCR مؤثرتر هستند. در مرحله بعد، آستانه‌گذاری باینری را با روش Otsu با استفاده از cv2.threshold() اعمال می‌کنیم که به تشخیص متن از پس زمینه با تبدیل تصویر به فرمت سیاه و سفید با کنتراست بالا کمک می‌کند. در نهایت، تصویر پردازش شده با استفاده از Matplotlib (plt.imshow()) نمایش داده می‌شود.

تابع extract_text() OCR را روی تصویر از پیش پردازش شده انجام می‌دهد. از آنجایی که Tesseract-OCR به فرمت تصویر PIL نیاز دارد، ابتدا آرایه NumPy (تصویر پردازش شده) را با استفاده از Image.fromarray(image) به یک تصویر PIL تبدیل می‌کنیم. سپس، این تصویر را به pytesseract.image_to_string() ارسال می‌کنیم که متن شناسایی شده را استخراج و برمی‌گرداند. در نهایت، متن استخراج شده چاپ می‌شود و نتیجه OCR را از تصویر بارگذاری شده نشان می‌دهد.

برای اطمینان از اینکه متن استخراج شده به راحتی قابل دسترسی است، آن را به عنوان یک فایل متنی با استفاده از مدیریت فایل داخلی پایتون ذخیره می‌کنیم. دستور open(“extracted_text.txt”, “w”) یک فایل متنی ایجاد می‌کند (یا بازنویسی می‌کند) و خروجی OCR استخراج شده را در آن می‌نویسد. پس از ذخیره فایل، از files.download(“extracted_text.txt”) برای ارائه یک لینک دانلود خودکار استفاده می‌کنیم.

در نتیجه، با ادغام OpenCV، Tesseract-OCR، NumPy و Matplotlib، ما با موفقیت یک برنامه OCR ساخته‌ایم که می‌تواند تصاویر را پردازش کرده و متن را در گوگل کولب استخراج کند. این گردش کار یک راه ساده و در عین حال مؤثر برای تبدیل اسناد اسکن شده، متن چاپ شده یا محتوای دست‌نویس به فرمت متن دیجیتال فراهم می‌کند. مراحل پیش پردازش دقت بهتری را تضمین می‌کند و توانایی ذخیره و دانلود نتایج آن را برای تجزیه و تحلیل بیشتر راحت می‌کند.

در اینجا نوت‌بوک کولب قرار دارد. همچنین، فراموش نکنید که ما را در توییتر دنبال کنید و به کانال تلگرام و گروه لینکدین ما بپیوندید. فراموش نکنید که به ساب‌ردیت ۸۰ هزار+ ML ما بپیوندید.

آصف رزاق مدیرعامل Marktechpost Media Inc. است. آصف به عنوان یک کارآفرین و مهندس رویایی، متعهد به استفاده از پتانسیل هوش مصنوعی برای خیر اجتماعی است. جدیدترین تلاش او راه اندازی یک پلتفرم رسانه ای هوش مصنوعی، Marktechpost است که به دلیل پوشش عمیق اخبار یادگیری ماشین و یادگیری عمیق که هم از نظر فنی sound و هم به راحتی برای مخاطبان گسترده قابل درک است، برجسته است. این پلتفرم دارای بیش از 2 میلیون بازدید ماهانه است که نشان دهنده محبوبیت آن در بین مخاطبان است.