خلاصه: این مقاله به صورت قدم‌به‌قدم نشان می‌دهد چطور عکس یا فایل اسکن‌شده (تصویر/PDF) را به متن قابل ویرایش تبدیل کنید. از آماده‌سازی تصویر و انتخاب ابزار تا کد نمونه برای توسعه‌دهنده‌ها و نکات رفع خطا را پوشش می‌دهد.

فهرست مطالب

  1. OCR چیه و چه زمانی ازش استفاده کنیم
  2. روش‌های تبدیل: آنلاین، آفلاین و متن‌باز
  3. پیش‌پردازش تصویر برای افزایش دقت
  4. نرم‌افزارها و سرویس‌های محبوب
  5. حفظ قالب‌بندی و ساختار (Layout)
  6. کد نمونه: استفاده از Tesseract در پایتون
  7. پرسش‌های متداول

OCR چیست و چه زمانی از آن استفاده کنیم؟

OCR (Optical Character Recognition) یا تشخیص نوری نویسه‌ها فرایندی است که متن موجود در تصاویر یا فایل‌های اسکن‌شده را تشخیص داده و آن را به متن قابل جستجو و ویرایش تبدیل می‌کند. کاربردها شامل تبدیل آرشیوهای اسکن‌شده، استخراج متن از فاکتورها و رسیدها، ساخت دیتابیس قابل جستجو و استفاده در گردش کارهای اداری است.

روش‌های تبدیل — آنلاین، آفلاین و متن‌باز

به طور کلی سه مسیر برای تبدیل وجود دارد:

  • سرویس‌های آنلاین تجاری: Google Cloud Vision, Microsoft Azure OCR, ABBYY Cloud — راحت، دقیق و پشتیبانی از زبان‌‌ها و فرمت‌ها ولی هزینه و نگرانی حریم خصوصی دارد.
  • نرم‌افزارهای دسکتاپ: ABBYY FineReader, Adobe Acrobat Pro — برای تبدیل PDFهای اسکن‌شده و حفظ قالب‌بندی عالی‌اند؛ معمولاً پولی هستند.
  • کد متن‌باز: Tesseract — رایگان، قابل اجرا محلی و مناسب برای خودکارسازی؛ دقت خوب در زبان‌های رایج با پیش‌پردازش مناسب دارد.

پیش‌پردازش تصویر برای افزایش دقت OCR

قبل از ارسال تصویر به موتور OCR، اقدامات زیر دقت را به طور قابل توجهی بالا می‌برند:

  • کاهش نویز: فیلترهای نرمالیزاسیون یا median blur برای حذف خطوط و لکه‌ها.
  • افزایش کنتراست: تبدیل به خاکستری (grayscale) و تنظیم سطح (Histogram equalization) یا افزایش کنتراست.
  • باینری‌سازی (Thresholding): برای متن سیاه روی پس‌زمینه روشن، تبدیل تصویر به سیاه/سفید می‌تواند مفید باشد (Otsu threshold).
  • تصحیح چرخش (Deskew): متن‌های اسکن‌شده معمولاً کمی کج‌اند. تصحیح زاویه باعث خوانایی بهتر می‌شود.
  • کنتراست و برش (Crop): حذف حاشیه‌ها و تمرکز روی ناحیه‌ی متن اصلی.
نکته: اگر تصویر خیلی تار یا با رزولوشن پایین است (200 DPI) احتمال خطا زیاد است؛ سعی کنید اسکن‌ها را با حداقل 300 DPI تهیه کنید.

ابزارها و سرویس‌های محبوب

Tesseract (رایگان)

موتور OCR متن‌باز که توسط Google پشتیبانی می‌شود. مناسب برای توسعه و اجرا محلی. برای زبان‌های مختلف باید مدل زبان نصب شود (مثل fas.traineddata برای فارسی اگر موجود باشد).

Google Cloud Vision / Document AI

دقت بالا، تشخیص زبان خودکار و قابلیت استخراج ساختار (جداول، پاراگراف‌ها) — نیاز به حساب ابری و هزینه دارد.

ABBYY FineReader

ابزار دسکتاپ حرفه‌ای با امکانات حفظ قالب‌بندی، تبدیل PDF و استخراج دقیق متن از اسناد پیچیده.

Adobe Acrobat Pro

قابلیت OCR داخلی برای پی‌دی‌اف‌ها؛ مناسب برای کاربرانی که با PDF زیاد کار می‌کنند.

حفظ قالب‌بندی، جداول و تصاویر

حفظ ساختار اصلِ صفحه (Layout) مثل ستون‌ها، جداول و تصاویر چالش‌برانگیز است. در انتخاب ابزار به این نکات توجه کن:

  • ابزارهای تجاری مثل ABBYY و Google Document AI خروجی‌هایی با حفظ ساختار (Word/HTML) بهتر تولید می‌کنند.
  • Tesseract خروجی متن ساده می‌دهد، ولی با ابزارهایی مثل layout-parser یا با OCR پیشرفته می‌توان Layout را بازسازی کرد.
  • برای تبدیل دقیق جدول‌ها، ابزارهای اختصاصی Table OCR یا پس‌پردازش با کتابخانه‌هایی مثل camelot و tabula برای PDF مفید است.

کد نمونه — استفاده از Tesseract در پایتون

این مثال نشان می‌دهد چگونه یک تصویر را پیش‌پردازش ساده کرده و با Tesseract متن را استخراج کنیم. ابتدا مطمئن شوید tesseract روی سیستم نصب است و سپس پکیج pytesseract و opencv-python را نصب کنید.

pip install pytesseract opencv-python pillow
# در لینوکس/ویندوز باید tesseract را هم نصب و مسیر آنرا تنظیم کنید
import cv2
import pytesseract
from PIL import Image

# بارگذاری تصویر
img = cv2.imread('scan.jpg')
# تبدیل به خاکستری
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# باینری سازی با آستانه اوتسو
_, th = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# ذخیره یا مستقیم به pytesseract
text = pytesseract.image_to_string(th, lang='fas+eng')
print(text)
توضیح: پارامتر lang را بر اساس زبان‌های مورد نیاز تنظیم کنید. برای فارسی ممکن است لازم باشد فایل مدل فارسی نصب شود یا از مدل‌های سفارشی استفاده کنید.

نمونه‌ی یک گردش‌کار عملی (Workflow)

  1. اسکن کردن با حداقل 300 DPI و نور یکنواخت.
  2. حذف حاشیه و کراپ ناحیه متن.
  3. پیش‌پردازش (Gray, Deskew, Denoise, Threshold).
  4. اجرای OCR (Tesseract یا سرویس ابری).
  5. بازبینی دستی / تصحیح احتمالی و ذخیره در فرمت دلخواه (TXT, DOCX, searchable PDF).

پرسش‌های متداول (FAQ)

۱. بهترین روش برای اسناد فارسی چیه؟
اگر اسناد فارسی زیادی دارید و دنبال دقت بالاتر هستید، استفاده از ابزارهای تجاری یا مدل‌های OCR که به فارسی آموزش دیده‌اند پیشنهاد می‌شود. Tesseract هم مناسب است اما نیاز به تنظیم و پیش‌پردازش دقیق‌تر دارد.
۲. چطور کیفیت OCR را اندازه بگیرم؟
معیارهایی مثل Character Error Rate (CER) و Word Error Rate (WER) برای اندازه‌گیری دقت استفاده می‌شوند. نمونه‌ای از متن صحیح داشته باشید و خروجی OCR را با آن مقایسه کنید.
۳. آیا می‌توانم فایل PDF اسکن‌شده را مستقیم تبدیل کنم؟
بله. Adobe Acrobat و ABBYY مستقیماً PDF اسکن‌شده را OCR می‌کنند. برای Tesseract می‌توانید صفحات PDF را با ابزارهایی مانند pdf2image به تصاویر تبدیل و سپس OCR کنید.
۴. جدول‌ها و فرم‌ها چطور استخراج شوند؟
استفاده از ابزارهای قدرتمند مانند ABBYY یا سرویس‌های Document AI بهترین نتیجه را می‌دهد. برای راهکار کدنویسی می‌توانید از پس‌پردازش جایگاه‌ها (layout-parser) و استخراج سلول به کمک تحلیل خطوط استفاده کنید.

نکات نهایی و جمع‌بندی

  • اگر به دقت و حفظ قالب‌بندی نیاز دارید، ابزارهای تجاری بهترین انتخاب‌اند؛ اگر هدف اتوماسیون ارزان و محلی است، Tesseract مناسب است.
  • پیش‌پردازش تصویر بیشترین تأثیر را روی دقت OCR دارد.
  • همیشه خروجی را بازبینی دستی کنید یا الگوریتم‌های تصحیح خودکار (spellcheck / language model) روی آن اجرا کنید.