تبدیل عکس به متن: ۸ نکته برای تشخیص دقیق متن (OCR)
ابزار رایگان OCR خود را با متن ریز، خطوط کج، سایه، تاری و متن فارسی آزمایش کردیم. در این راهنما میبینید چه چیزی واقعاً تشخیص متن را خراب میکند، عکس یا اسکرینشات را چطور آماده کنید و نتیجه را چطور بررسی کنید.
تشخیص نوری نویسهها (OCR) پیکسلهای یک تصویر را به متنی تبدیل میکند که میتوانید کپی، ویرایش و جستوجو کنید. با آن میتوانید یک نقلقول را از اسکرینشات بردارید، در نامهی اسکنشده جستوجو کنید یا مبلغ یک فاکتورِ عکسگرفته را کپی کنید. OCR امروزی روی تصویرهای تمیز بسیار خوب کار میکند و روی تصویرهای بد بهطرز شگفتآوری شکننده است. این راهنما با اندازهگیریهایی که با ابزار تبدیل عکس به متن (OCR) خودمان انجام دادیم، نشان میدهد کدام مشکلها بیشترین اثر را دارند.
OCR در مرورگر شما چطور کار میکند
ابزار ما از Tesseract استفاده میکند؛ موتور متنباز OCR که بین سالهای ۱۹۸۵ تا ۱۹۹۴ در شرکت Hewlett-Packard ساخته شد، در ۲۰۰۵ متنباز شد و از ۲۰۰۶ تا ۲۰۱۷ گوگل آن را توسعه داد. از نسخهی ۴ به بعد، Tesseract کل یک سطر را با شبکهی عصبی (LSTM) تشخیص میدهد. پروژهی tesseract.js امکان اجرای آن را در مرورگر فراهم میکند.
وقتی تشخیص را شروع میکنید، موتور و دادهی زبان (فارسی، انگلیسی، آلمانی یا اسپانیایی) از سرور ما بارگیری میشود؛ خود تصویر هرگز بارگذاری نمیشود. ابزار پیش از تشخیص، تصویر را روی پسزمینهی سفید میکشد تا PNGهای شفاف هم کار کنند، و تصویرهای کوچک را آنقدر بزرگ میکند که ضلع بلندتر حدود ۱٬۶۰۰ پیکسل شود (حداکثر سه برابر اندازهی اصلی). برای متن فارسی هم فیلتر نویز Tesseract را خاموش میکند، چون حروف پیوستهی فارسی گاهی «نویز» تشخیص داده میشوند و کل سطر حذف میشود. نویسههای عربی «ي» و «ك» هم در خروجی به «ی» و «ک» فارسی تبدیل میشوند.
متن فارسی: حروف عالی، عددها مشکلدار
یک یادداشت فاکتور فارسی را با فونت وزیرمتن در اندازههای مختلف به تصویر تبدیل کردیم و با مدل زبان فارسی تشخیص دادیم. متن شامل شمارهی فاکتور، تاریخ، مبلغ و درصد بود. دقت را جداگانه برای حروف و برای عددها حساب کردیم:
| اندازهی قلم | دقت حروف | عددهای درست (از ۴) |
|---|---|---|
| ۱۰ پیکسل | ۹۷٫۵٪ | ۲ |
| ۱۲ پیکسل | ۹۸٫۱٪ | ۲ |
| ۱۶ پیکسل | ۱۰۰٪ | ۱ |
| ۲۴ پیکسل | ۱۰۰٪ | ۱ |
| ۳۶ پیکسل | ۱۰۰٪ | ۲ |
نتیجه روشن است: حروف فارسی از اندازهی ۱۶ پیکسل بینقص تشخیص داده شدند، اما عددها نه. مبلغ «۱٬۲۸۴٬۵۰۰ تومان» با جداکنندهی هزارگان در هیچ اندازهای درست خوانده نشد و اغلب فقط «۰» باقی ماند. شمارهی فاکتور «۲۰۲۶-۰۴۱۷» یا با ترتیب جابهجا برگشت یا رقمهایش اشتباه شد. فقط عدد سادهی «۱۰» در همهی اندازهها درست بود و حتی «۲۲» در دو اندازه به «۳۳۲» تبدیل شد. اگر از OCR برای فاکتور، قبض یا صورتحساب فارسی استفاده میکنید، همهی عددها را با اصل مقایسه کنید.
آزمایشهای دیگر
همان آزمایش را با یک متن کوتاه انگلیسی در شرایط مختلف تکرار کردیم. امتیاز، دقت نویسهای است: سهم نویسههایی که پس از یکسانسازی فاصلهها با اصل یکی هستند؛ ۱۰۰٪ یعنی نتیجهی بینقص.
| ارتفاع حرف کوچک «x» | اندازهی تصویر | در اندازهی اصلی | بزرگشده توسط ابزار |
|---|---|---|---|
| ۴ پیکسل (قلم ۸) | ۲۲۴ × ۶۰ | ۲۹٫۹٪ | ۸۹٫۱٪ |
| ۵ پیکسل (قلم ۱۰) | ۲۸۰ × ۷۶ | ۹۲٫۵٪ | ۹۹٫۵٪ |
| ۷ پیکسل (قلم ۱۲) | ۳۳۶ × ۸۸ | ۱۰۰٪ | ۱۰۰٪ |
| ۱۰ پیکسل (قلم ۱۸) | ۵۰۴ × ۱۳۶ | ۱۰۰٪ | ۱۰۰٪ |
| ۱۹ پیکسل (قلم ۳۶) | ۱۰۰۹ × ۲۷۲ | ۱۰۰٪ | ۱۰۰٪ |
متنی که ارتفاع حروف کوچکش فقط ۴ پیکسل بود در اندازهی اصلی تقریباً ناخوانا بود و بزرگنمایی دقت را از ۳۰٪ به ۸۹٪ رساند. حتی در این حالت هم موتور بهجای «1,284.50» عبارت «1.28450» را خواند؛ دقیقاً همان نوع خطایی که روی فاکتور اهمیت دارد. توصیههای منتشرشده برای Tesseract ارتفاع ۲۰ تا ۴۰ پیکسل را برای حروف کوچک ایدهآل میدانند؛ پس در عکسهای واقعی بهتر است نزدیکتر بروید یا بزرگنمایی کنید.
| شرایط (متن انگلیسی با ارتفاع x برابر ۱۹ پیکسل) | دقت |
|---|---|
| کج به اندازهی ۲ درجه | ۱۰۰٪ |
| کج به اندازهی ۵ درجه | ۱۰۰٪ |
| کج به اندازهی ۱۰ درجه | ۹۴٫۵٪ |
| کج به اندازهی ۲۰ درجه | ۴۵٫۳٪ |
| متن خاکستری روشن روی سفید (#999) | ۱۰۰٪ |
| متن خاکستری بسیار روشن روی سفید (#ccc) | ۱۰۰٪ |
| متن روشن روی پسزمینهی تیره | ۱۰۰٪ |
| نویز تصادفی شدید | ۱۰۰٪ |
| تار (محوشدگی گاوسی ۳ پیکسلی) | ۸۹٫۶٪ |
| سایه: روشنایی در عرض تصویر تا ۳۵٪ کم میشود | ۶۴٫۷٪ |
| متن ریز (۷ پیکسل) ذخیرهشده با JPG کیفیت ۱۰ | ۹۶٫۵٪ |
سه عامل بیشترین آسیب را میزنند: کجی بیش از چند درجه، تاری و نور ناهمگون. آزمایش سایه از همه آموزندهتر است: Tesseract بیصدا بخش تیرهتر هر سطر را جا انداخت و با این حال برای متنی که برگرداند اطمینان ۹۵٪ گزارش کرد. اطمینان بالا به این معنا نیست که چیزی جا نیفتاده است.
۸ نکته برای نتیجهی بهتر
۱. متن را به اندازهی کافی بزرگ کنید
بهجای عکس گرفتن از کل صفحه از دور، نزدیکتر بروید یا بزرگنمایی کنید. برای اسکرینشات، صفحهی وب یا سند را پیش از گرفتن تصویر روی ۱۵۰ تا ۲۰۰ درصد بزرگ کنید. برای اسکن، ۳۰۰ dpi توصیهی رایج برای اندازهی معمولی متن است.
۲. سطرها را صاف نگه دارید
در آزمایش ما کجی تا ۵ درجه بیاثر بود، ۱۰ درجه چند درصد از دقت کم کرد و ۲۰ درجه نتیجه را بیاستفاده کرد. گوشی را موازی صفحه نگه دارید. تصویرهای چرخیده یا وارونه را با ابزار چرخش و قرینه کردن تصویر صاف کنید؛ برای کجی کم، دوباره عکس بگیرید یا آن را در ویرایشگر عکس گوشی صاف کنید.
۳. صفحه را یکنواخت روشن کنید
سایهی دست یا گوشی رایجترین مشکل عکسهای اسناد است. از نور روز یا دو منبع نور استفاده کنید، از بازتاب فلاش روی کاغذ براق پرهیز کنید و اول بخشهای تیرهتر نتیجه را بررسی کنید.
۴. فقط متن را نگه دارید
پسزمینه، ستونهای دیگر و تصویرها را با ابزار برش تصویر حذف کنید. شلوغی کمتر یعنی نویسههای سرگردان کمتر و ترتیب خواندن درست، بهخصوص در صفحههای چندستونی.
۵. ثابت نگه دارید و فوکوس کنید
تاری در آزمایش ما حدود ده واحد درصد از دقت کم کرد. برای فوکوس روی صفحه ضربه بزنید، آرنجها را روی میز بگذارید و اگر عکس اول نرم و تار به نظر میرسد، دو عکس بگیرید.
۶. زبان درست را انتخاب کنید
پیش از شروع، زبان متن را انتخاب کنید: مدل زبان میداند چه حروف و کلمههایی را انتظار داشته باشد. برای اسناد دوزبانه ترکیب «فارسی + انگلیسی» را انتخاب کنید. متن فارسی با حروف پیوستهاش به تصویر تمیزتر و تیزتری از خط لاتین نیاز دارد؛ اسکرینشاتها معمولاً خوب جواب میدهند.
۷. اسکرینشات را PNG ذخیره کنید
فشردهسازی JPG دور حروف لکههای محو میاندازد. تصویر آزمایشی بسیار فشردهی ما (JPG با کیفیت ۱۰) هنوز به ۹۶٫۵٪ رسید، اما هر خطا را باید خودتان پیدا کنید. اگر حق انتخاب دارید، اسکرینشات را با فرمت بدون افت PNG ذخیره کنید.
۸. عددها و نامها را همیشه بررسی کنید
خطاهای OCR باورپذیر به نظر میرسند: «1.28450» بهجای «1,284.50»، حرف l بهجای رقم 1، مبلغ فارسیای که به «۰» تبدیل میشود یا شمارهای که ترتیب رقمهایش جابهجا شده. مبلغها، تاریخها، شمارهحسابها و نامها را پیش از استفاده با اصل مقایسه کنید.
اسکرینشات، اسکن و عکس در مقایسه با هم
| منبع | کیفیت معمول | به چه چیزی دقت کنید |
|---|---|---|
| اسکرینشات | عالی: تیز، صاف، کنتراست یکنواخت | متن ریز؛ پیش از گرفتن تصویر بزرگنمایی کنید |
| اسکنر (۳۰۰ dpi) | بسیار خوب | حاشیههای تیره، صفحههای کج |
| عکس با گوشی | متغیر | کجی، سایه، تاری، صفحههای خمیده |
حریم خصوصی: چرا OCR محلی مهم است
سندهایی که با OCR خوانده میشوند اغلب خصوصیاند: قرارداد، نامه، کارت شناسایی، صورتحساب بانکی. بسیاری از مبدلهای آنلاین این فایلها را روی سرور بارگذاری میکنند. ابزار تبدیل عکس به متن (OCR) همهی کار را در زبانهی مرورگر شما انجام میدهد. زبانه را ببندید؛ چیزی باقی نمیماند.
ابزارهای این راهنما
-
تبدیل عکس به متن (OCR)
استخراج متن از عکس، اسکرینشات و اسکن با OCR؛ با پشتیبانی از فارسی، انگلیسی، آلمانی و اسپانیایی، رایگان، بدون آپلود و مستقیم در مرورگر شما.
باز کردن ابزار -
برش تصویر
برش آنلاین تصویرهای JPG، PNG و WebP: کادر را بکشید یا پیکسلها را وارد کنید، با نسبتهایی مثل ۱:۱، ۴:۳ و ۱۶:۹. رایگان و بدون آپلود.
باز کردن ابزار -
چرخش و قرینه کردن تصویر
چرخاندن تصویر ۹۰ درجه به چپ یا راست، وارونه کردن یا قرینهی افقی و عمودی. چند تصویر با هم، رایگان و بدون آپلود.
باز کردن ابزار -
تغییر اندازهی تصویر
اندازهی تصاویر را به پیکسل دقیق یا درصدی تغییر دهید، با حفظ نسبت ابعاد یا بدون آن. رایگان، سریع و خصوصی.
باز کردن ابزار
پرسشهای متداول
آیا OCR دستخط را میخواند؟
فقط بهسختی. Tesseract برای متن چاپی آموزش دیده است. حروف جدا و مرتب گاهی جواب میدهد؛ دستخط پیوسته معمولاً نه.
ابزار از چه زبانهایی پشتیبانی میکند؟
فارسی، انگلیسی، آلمانی و اسپانیایی و نیز ترکیب فارسی، آلمانی یا اسپانیایی با انگلیسی برای سندهای دوزبانه.
چرا عددهای فارسی در نتیجه اشتباه است؟
در آزمایش ما مدل فارسی Tesseract حروف را بسیار خوب خواند، اما عددهای چندرقمی، بهویژه عدد با جداکنندهی هزارگان، اغلب اشتباه یا ناقص برگشتند. عددها را همیشه با تصویر اصلی مقایسه کنید.
چرا برخی سطرها در نتیجه نیستند؟
معمولاً به دلیل نور ناهمگون، متن خیلی ریز یا پسزمینهی شلوغ. در آزمایش سایه، موتور بخش تیرهتر هر سطر را بدون هشدار جا انداخت. تصویر را برش بزنید، نور را بهتر کنید و دوباره امتحان کنید.
آیا تصویر من بارگذاری میشود؟
نه. تصویر در مرورگر شما پردازش میشود؛ فقط موتور OCR و دادهی زبان از سرور ما بارگیری میشوند.
منابع و مطالعهی بیشتر
- Tesseract OCR – README and history (GitHub) (github.com)
- Tesseract.js – Tesseract OCR in JavaScript (tesseract.projectnaptha.com)
- Tesseract documentation: Improving the quality of the output (tesseract-ocr.github.io)
- iDigBio: OCR tips (x-height and resolution) (www.idigbio.org)