Sponsored

পাইথনে বাংলা OCR - ইমেজ টু টেক্সট

0
2

ইমেজ থেকে টেক্সট বের করার জন্য অনেক টুল রয়েছে। বেশির ভাগই ইংরেজিতে। বাংলা টেক্সট এক্সট্রাক্ট করার অপশন থাকে না। আপনি চাইলে ছোট্ট একটা পাইথন প্রোগ্রাম লিখে নিতে পারেন। যার মাধ্যমে যে কোন PDF/ইমেজ থেকে বাংলা টেক্সট গুলো এক্সট্রাক্ট করতে পারবেন। আর তার জন্য আমরা ব্যবহার করব pytesseract।

আমরা pip ব্যবহার করে pytesseract ইন্সটল করব। পিপ সম্পর্কে বিস্তারিতঃ পাইথন প্যাকেজ ম্যানেজার PIP। ইন্সটল শেষে কমান্ডলাইন বা টার্মিনালে গিয়ে লিখবঃ

pip install pytesseract

ঠিক মত ইন্সটল হয়েছে কিনা তা ভেরিফাই করতে পারি এই কোড টার্মিনালে রান করেঃ

python -c "import pytesseract; print('pytesseract installed successfully!')"

বাংলা ভাষা ডিফল্ট ভাবে ইন্সটল থাকার কথা। কি কি ল্যাঙ্গুয়েজ প্যাক রয়েছে, তা দেখা যাবে নিচের কমান্ড রান করেঃ

tesseract --list-langs

বাংলার কোড হচ্ছে ben। যদি না থাকে, এখান থেকে ডাউনলোড করে নেওয়া যাবে। ডাউনলোড শেষে tessdata ফোল্ডারে কপি করতে হবে। সাধারণত লিনাক্স বা ম্যাকে এই লোকেশনে। /usr/share/tesseract-ocr/5/tessdata/ এবং উইন্ডোজে C:\Program Files\Tesseract-OCR\tessdata এই লোকেশনে কপি করতে হবে।

এরপর নিচের মত করে ছোট্ট একটা স্ক্রিপ্ট লিখলে নির্দিষ্ট ইমেজ থেকে থেকে টেক্সট বের করে দিবে।

import pytesseract
from PIL import Image

# Load the image
image_path = "bangla.png"  # Path to your image file
image = Image.open(image_path)

# Perform OCR on the image
text = pytesseract.image_to_string(image, lang="ben")  # 'ben' is the code for Bangla

# Print the extracted text
print("Extracted Text:")
print(text)

একটা ফাইলে টেক্সট গুলো আউটপুট হিসেবে লিখতে পারিঃ

# Save the extracted text to a file
with open("extracted_bangla_text.txt", "w", encoding="utf-8") as file:
    file.write(text)

একের অধিক ইমেজ ফাইল যদি এক সাথে রিড করতে চাই, তাহলে এভাবে লিখতে পারি কোডঃ

import os
import pytesseract
from PIL import Image

# Directory containing the images
image_dir = "path_to_your_directory"  # Replace with the path to your image directory

# Output text file to save OCR results
output_txt_file = "ocr_results.txt"

# Language for OCR (Bangla in this case)
ocr_language = "ben"  # Change to your desired language

# Open the output file in write mode
with open(output_txt_file, "w", encoding="utf-8") as output_file:
    # Iterate through all files in the directory
    for filename in os.listdir(image_dir):
        if filename.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".bmp")):  # Supported image formats
            # Full path to the image
            image_path = os.path.join(image_dir, filename)

            # Load the image
            image = Image.open(image_path)

            # Perform OCR on the image
            extracted_text = pytesseract.image_to_string(image, lang=ocr_language)

            # Write the filename and extracted text to the output file
            output_file.write(f"File: {filename}\n")
            output_file.write(extracted_text)
            output_file.write("\n" + "=" * 50 + "\n")  # Separator for readability

            print(f"Processed: {filename}")  # Optional: Print progress

print(f"All OCR results saved to {output_txt_file}")

একের অধিক ল্যাঙ্গুয়েজও আমরা এক্সট্রাক্ট করতে পারব। যেমন বেশির ভাগ লেখায় ইংরেজি শব্দ ও থাকে। তখন ben+eng এভাবে দুইটা ল্যাঙ্গুয়েজ যোগ করতে দিতে পারব।

ocr_languages = "ben+eng"

PDF থেকে বাংলা টেক্সট

PDF থেকে যদি টেক্সট এক্সট্রাক্ট করতে চাই, তাহলে pdf2image ইন্সটল করে নিব।

pip install pdf2image

এরপর পর নিচের মত করে কোড লিখবঃ

import pytesseract
from pdf2image import convert_from_path

# Convert PDF to images
images = convert_from_path("bangla.pdf")

# OCR with Bangla language
for i, image in enumerate(images):
    text = pytesseract.image_to_string(image, lang="ben")
    print(f"Page {i + 1}:\n{text}\n")

উপরের স্ক্রিপ্ট টার্মিনালে আউটপুট দেখাবে। আমরা চাইলে একটা ফাইলে টেক্সট গুলো আউটপুট দিতে পারিঃ

import pytesseract
from pdf2image import convert_from_path

# Path to your PDF file
pdf_path = "bangla.pdf"

# Output text file path
output_txt_path = "output.txt"

# Convert the PDF to images
images = convert_from_path(pdf_path)

# Open a text file for writing in Unicode format
with open(output_txt_path, "w", encoding="utf-8") as file:
    for i, image in enumerate(images):
        # Perform OCR on each page
        text = pytesseract.image_to_string(image, lang="ben")  # 'ben' for Bangla language
        # Write the page number and extracted text to the file
        file.write(f"Page {i + 1}:\n")
        file.write(text)
        file.write("\n" + "="*50 + "\n")  # Separator between pages

print(f"Bangla text extracted and saved to {output_txt_path}")

সহজ না?

অপশনালঃ আমি সাধারণত Miniconda ব্যবহার করে পাইথন একেক কাজে একেক এনভারনমেন্ট তৈরি করে এরপর পাইথন স্ক্রিপ্ট রান করি। যেমন উপরের কাজ গুলো করার জন্য প্রথমে ocr এনভারনমেন্ট তৈরি করে নিব। এনভারনমেন্ট নিয়ে বিস্তারিত পাওয়া যাবে পাইথনের একের অধিক ভার্সন ম্যানেজমেন্ট এবং ভার্চুয়াল এনভারনমেন্ট লেখাতে।

মেশিন লার্নিং রিলেটেড কাজ করার কারণে pyenv থেকে আমর conda এনভারনমেন্ট বেশি ব্যবহৃত হয়। এখানে conda দিয়ে কিভাবে pytesseract ইন্সটল করবেন, তা দেখাচ্ছি।

কম্পিউটারে মিনিকন্ডা ইন্সটল না থাকলে প্রথমে ইন্সটল করে নিব। উইন্ডোজ, ম্যাক, লিনাক্স সব অপারেটিং সিস্টেমের জন্যই পাওয়া যায়। মিনিকন্ডা হচ্ছে এনাকন্ডার মিনি ভার্সন। এনাকন্ডাতে অনেক বেশি প্যাকেজ থাকে। যেগুলোর বেশির ভাগই অদরকারি, তাই মিনি ভার্সন আমি প্রেফার করি। এরপর conda ব্যবহার করে দরকারি প্যাকেজ গুলো ইন্সটল করে নিতে পারব। তার পর নিচের মত করে একটা এনভারনমেন্ট তৈরি করে নিবঃ

conda create -n orc python=3.12

এরপর সদ্য তৈরি করা এনভারনমেন্ট একটিভ করে নিব।

conda activate ocr

তারপর এই এনভারনমেন্টে pytesseract ইন্সটল করবঃ

conda install -c conda-forge pytesseract

এরপর চাইলে নিচের স্ক্রিপ্ট রান করতে পারবঃ

import pytesseract
from PIL import Image

# Load the image
image_path = "bangla.png"  # Path to your image file
image = Image.open(image_path)

# Perform OCR on the image
text = pytesseract.image_to_string(image, lang="ben")  # 'ben' is the code for Bangla

# Print the extracted text
print("Extracted Text:")
print(text)

বাংলা প্যাক ইন্সটল না থাকলে ইন্সটল করতেঃ

conda install -c conda-forge tesseract-data-ben

পাইথন প্রোগ্রামিং নিয়ে এই ব্লগে প্রচুর লেখা রয়েছেঃ বাংলায় পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ। এই ব্লগের কোন লেখা পড়ে অসুবিধায় পড়লে jakir.me discussions গ্রুপে আলোচনা করতে পারেন।

Search
Categories
Read More
Nulled
এবারআয়হবেAndroidফোনদিয়ে‬ ৭ থেকে ৮ দিনে ১৪০০ টাকা ১০০ গ্যারান্টি with Payment proof | Techtunes | টেকটিউনস
অ্যাপল মানুষকে ফিরিয়ে নিচ্ছে হাত ঘড়ির যুগে… অসামান্য প্রাযুক্তিক উৎকর্ষতায়! একটি Apple...
By Nettumi 2026-09-21 05:26:43 0 29
Hacking Course
ক্যামেরায় বড় চমক দিচ্ছে হুয়াওয়ে মেট ৫০ প্রো স্মার্টফোন
এই মাত্র কয়েকদিন আগে গুগল এর পিক্সেল ৭ প্রো ফোনটি DxoMark এর সেরা ক্যামেরার টাইটেল পায়, সাথে...
By Nettumi 2026-09-25 09:58:47 0 29
Job
০৩ পদে বাংলাদেশ পল্লী উন্নয়ন বোর্ড নিয়োগ বিজ্ঞপ্তি ২০২৬ BRDB Job Circular 2026
3.8/5 - (122 votes)☰ মোট পদের ক্যাটাগরি০২👥 মোট শূন্যপদ০৩🎓 যোগ্যতাস্নাতক পাস🎂 বয়সসীমা১৮ থেকে ৩৫...
By Nettumi 2026-09-24 18:40:30 0 14
Tech
অ্যান্ড্রয়েড ন্যাভিগেশন ড্রয়ার নিয়ে বিস্তারিত
আমরা যখন অ্যান্ড্রয়েড স্টুডিওতে কোন প্রজেক্ট ওপেন করি, তখন ঐখানে অনেক গুলো অ্যাপ টেমপ্লেট দেখি।...
By Nettumi 2026-09-30 18:41:38 0 1
Tech
GitHub - harry0703/MoneyPrinterTurbo: 利用 AI 大模型和自动化工作流,根据主题或关键词一键生成高清短视频。Generate HD short videos from a topic or keyword with an automated AI workflow.
MoneyPrinterTurbo 💸 一站式 AI 短视频生成工具 只需提供视频主题或关键词,即可自动生成视频脚本、匹配素材、生成字幕和背景音乐,并合成高清短视频。 简体中文 |...
By Nettumi 2026-09-30 19:08:20 0 4
‎ ‎ ‎
Nettumi https://nettumi.com