PDF অনুবাদের কাজটি হস্তান্তর করার আগে, ফন্ট পরিবর্তন করার জন্য তাড়াহুড়ো করার পরিবর্তে প্রথমে ফন্টটি পরীক্ষা করুন।
ডিফল্ট ফন্ট তালিকার দৈর্ঘ্য full=True দ্বারা প্রত্যাবর্তিত tuple থেকে আলাদা। এর পরে, প্রথম ছয়টি আইটেম পড়ুন, এবং তারপর এক্সট্রাক্ট_ফন্ট দ্বারা ফেরত দেওয়া ফন্ট বাইটগুলি খালি কিনা তা পরীক্ষা করুন। একটি Base14 ফন্ট রেফারেন্সের অর্থ এই নয় যে ফন্টটি প্রোগ্রাম-এম্বেডেড; বা সাবসেট ফন্টগুলিকে একটি ত্রুটি হিসাবে বিবেচনা করা উচিত নয়।
যখন অনেক লোক অনুবাদ করার জন্য একটি পিডিএফ পান, তখন তারা প্রথমে যা মনে করে তা হল সরাসরি সিয়ুয়ান হেইবো বা এরিয়ালে পরিবর্তন করা। এটি প্রায়শই প্রসবের সময় সমস্যার সৃষ্টি করে: গাণিতিক চিহ্নগুলি বর্গক্ষেত্রে পরিণত হয়, সারণী সংখ্যাগুলি ভুলভাবে সংযোজিত হয়, বা কিছু পাঠকদের মধ্যে অনুবাদ খোলা যায় না। এই নিবন্ধটি বিকাশকারী এবং নথির মালিকদের জন্য লেখা হয়েছে যাদের PDF অনুবাদের কাজটি গ্রহণ করতে হবে। পড়ার পর, আপনি জানতে পারবেন কিভাবে PyMuPDF ইনভেন্টরি ফন্টে ব্যবহার করতে হয়, কিভাবে প্রত্যাবর্তিত ফলাফলগুলি ব্যাখ্যা করতে হয় এবং শুধুমাত্র কোড আউটপুটের উপর ভিত্তি করে কোন উপসংহার টানা যায় না।
ফন্ট ইনভেন্টরির উদ্দেশ্য হল প্রযুক্তিগত সম্পাদনাযোগ্যতা এবং রেন্ডারিং স্থিতিশীলতা নিশ্চিত করা, আইনি সম্মতি নিরীক্ষা করা নয়। ডিফল্ট ফন্ট তালিকা full=True দ্বারা প্রত্যাবর্তিত tuple দৈর্ঘ্য থেকে ভিন্ন। পড়ার সময়, প্রথম ছয়টি আইটেম নিতে হবে, এবং তারপর extract_font দ্বারা ফেরত দেওয়া ফন্ট বাইটগুলি খালি আছে কিনা তা পরীক্ষা করুন৷ বেস 14 ফন্ট রেফারেন্সের অর্থ এই নয় যে ফন্টটি প্রোগ্রাম-এম্বেডেড, এবং সাবসেটিং ফন্টগুলিকে সর্বদা একটি ত্রুটি হিসাবে বিবেচনা করা উচিত নয়।
এক বাক্যে উপসংহার
প্রথমে ফন্টগুলি ইনভেন্টরি করুন এবং তারপরে অনুবাদের পথটি স্থির করুন৷ টেক্সট এক্সট্রাক্ট করার আগে বিশ্বব্যাপী ফন্ট পরিবর্তন করবেন না।
| আপনার অবস্থা | প্রস্তাবিত অভ্যাস | কারণ |
|---|---|---|
| ফন্ট প্রোগ্রাম খালি | রেকর্ডগুলি এমবেডারে বের করা হয় না এবং পৃষ্ঠা পরিস্থিতি নিশ্চিত করে | বেস 14 রেফারেন্স ফন্ট এমবেড করা সমান নয় |
| উপসেট ফন্ট সম্মুখীন | ফন্ট আইডেন্টিটি রাখুন | সাবসেট ফন্ট দুর্নীতির সমান নয় |
| ফন্ট তালিকা খালি আছে | পৃষ্ঠা বিষয়বস্তু নিশ্চিত করুন | পৃষ্ঠাটি একটি চিত্র বা অন্য আঁকা পথ হতে পারে |
| বাস্তব ফাইল প্রক্রিয়া করতে হবে | প্রথমে সংবেদনশীল নমুনাগুলির সাথে পরীক্ষা করুন | নমুনা কোড সমস্ত বাস্তব ফাইলের উপর প্রভাব উপস্থাপন করে না |
কেন আমরা সরাসরি বিশ্বব্যাপী ফন্ট প্রতিস্থাপন করতে পারি না?
সরাসরি ফন্টগুলি প্রতিস্থাপন করা বেশ কয়েকটি সাধারণ সমস্যার সম্মুখীন হবে:
- মূল পাঠ্যের গাণিতিক চিহ্নগুলি বর্গাকারে পরিণত হয়।
- সারণীতে সংখ্যার সমান-প্রস্থের প্রান্তিককরণটি অবৈধ।
- সীমাবদ্ধ ফন্টগুলি এম্বেড করা হয়েছে, যার ফলে কিছু পাঠকদের মধ্যে অনুবাদটি খুলতে পারে না৷
অতএব, পাঠ্য নিষ্কাশন বা টাইপসেটিং পুনর্গঠন শুরু করার আগে, নথির একটি ফন্ট ইনভেন্টরি করুন। `get_page_fonts()` হল PyMuPDF দ্বারা প্রদত্ত অন্তর্নিহিত প্রোব, যা আপনাকে বলতে পারে কোন ফন্ট সংস্থানগুলি আসলে প্রতিটি পৃষ্ঠার দ্বারা উল্লেখ করা হয়েছে, সেগুলি সম্পূর্ণরূপে এমবেড করা হয়েছে কিনা এবং এনকোডিং প্রকার। এই তথ্যটি ভবিষ্যতে OCR, সরাসরি প্রতিস্থাপন, বা ম্যানুয়াল পুনর্বিন্যাস ব্যবহার করা উচিত কিনা তা নির্ধারণ করে।
ফন্টের তথ্য পড়ার মূল পয়েন্ট
- ডিফল্ট ফন্ট তালিকায়
full=Trueদ্বারা প্রত্যাবর্তিত টিপলের চেয়ে আলাদা দৈর্ঘ্য রয়েছে, যা প্রথম ছয়টি আইটেম হিসাবে পড়া হয়। - যখন ফন্ট প্রোগ্রাম খালি থাকে, এর মানে হল এমবেডেড ফন্ট বাইটগুলি বের করা হয় না।
- সাবসেট ফন্টগুলির শুধুমাত্র ফন্ট শনাক্তকারীকে ধরে রাখতে হবে এবং এটিকে একটি ত্রুটি হিসাবে সরাসরি বিচার করবেন না।
সিন্থেটিক টেস্টিং: মেমরি নির্মাণ এবং দাবী যাচাই
উদাহরণটিকে বিচ্ছিন্নভাবে চালানোর অনুমতি দেওয়ার জন্য, আমরা একটি সম্পূর্ণ স্বয়ংসম্পূর্ণ পরীক্ষার কেস তৈরি করেছি। বাহ্যিক ফাইলগুলির উপর নির্ভর করার পরিবর্তে, স্ক্রিপ্টটি PyMuPDF ব্যবহার করে মেমরিতে স্ট্যান্ডার্ড ফন্ট সমন্বিত একটি PDF তৈরি করে এবং তারপরে অবিলম্বে এটিতে ফন্ট ইনভেন্টরি করে। এটি শুধুমাত্র প্রজননযোগ্যতা নিশ্চিত করে না, তবে কপিরাইট এবং গোপনীয়তার ঝুঁকিও এড়ায়।
import pymupdf
with pymupdf.open() as doc:
page = doc.new_page()
page.insert_text((72, 72), "Font sample", fontname="helv")
fonts = doc.get_page_fonts(0, full=True)
assert fonts
report = []
for item in fonts:
xref, ext, kind, basefont, name, encoding = item[:6]
extracted_name, extracted_ext, extracted_type, data = doc.extract_font(xref)
report.append({"name": basefont, "font_program_present": bool(data),
"xref": xref, "encoding": encoding})
assert report[0]["name"] == "Helvetica"
assert report[0]["font_program_present"] is False
assert report[0]["xref"] > 0
এই পরীক্ষার স্পষ্ট সীমানা রয়েছে: একটি "দুষ্ট" বা "নন-এমবেডেড" সিন্থেটিক ফন্ট অবজেক্ট একটি বহিরাগত ফন্ট ফাইল না এনে মেমরিতে তৈরি করা যাবে না। অতএব, এই পরীক্ষাটি দুটি বিষয়ের উপর দৃষ্টি নিবদ্ধ করে: সাধারণ এমবেডেড ফন্টের পার্সিং নির্ভুলতা যাচাই করা এবং অবৈধ পৃষ্ঠা নম্বরগুলির ফাংশনের প্রতিরক্ষামূলক পরিচালনা। ব্যতিক্রম শাখা পৃথকভাবে পরীক্ষা করা প্রয়োজন. ডেমো কোড একটি বিচ্ছিন্ন পরিবেশে সঞ্চালিত হয়, কিন্তু এটি সমস্ত বাস্তব ফাইল বা পণ্য কর্মক্ষমতা একটি গ্যারান্টি প্রতিনিধিত্ব করে না.
গ্রহণযোগ্যতার মানদণ্ড এবং ম্যানুয়াল পর্যালোচনা সীমানা
একটি কোড থেকে "নিরাপদ" বা "সতর্কতা" আউটপুট শুধুমাত্র প্রযুক্তিগত সংকেত এবং সরাসরি অনুবাদের সম্ভাব্যতার সাথে সমান হতে পারে না। স্ক্রিপ্টটি সঠিকভাবে এমবেডিং স্ট্যাটাস রিপোর্ট করতে পারে, কিন্তু এটি ফন্টের টার্গেট ল্যাঙ্গুয়েজে একটি সংশ্লিষ্ট গ্লিফ আছে কিনা তা বলতে পারে না এবং লাইসেন্সটি এমবেডিং এর পরিবর্তনের অনুমতি দেয় কিনা তা মূল্যায়ন করতে পারে না। এই সিদ্ধান্তগুলি প্রকল্পের প্রেক্ষাপটে লোকেদের দ্বারা নেওয়া দরকার।
নির্দিষ্ট ব্যতিক্রম পরিচালনার সিদ্ধান্ত
| পর্যবেক্ষণ | কি করতে হবে | অনুমান করা উচিত নয় |
|---|---|---|
| ফন্ট প্রোগ্রাম খালি | রেকর্ডগুলি এমবেডারে আনা হয়নি৷ | Base14 রেফারেন্সগুলি এম্বেডিংয়ের মতো নয় |
| জিজি ফন্ট | ফন্ট চিহ্নগুলি ধরে রাখুন | ক্ষয়ক্ষতির সরাসরি বিচার করা হয় না |
| তালিকাটি ফাঁকা | পৃষ্ঠার বিষয়বস্তু পরীক্ষা করুন | এটি একটি চিত্র বা অন্য কোনও অঙ্কনের পথ হতে পারে |
গুরুত্বপূর্ণ নথিগুলি পরিচালনা করার আগে, দয়া করে আসলগুলি রাখুন এবং উপরের সীমানা এবং গ্রহণযোগ্যতা আইটেম অনুসারে সেগুলি পর্যালোচনা করুন।
🎯 কোন পদ্ধতিটি আপনার জন্য উপযুক্ত?
আপনি যদি কেবল অনুবাদ করার জন্য একটি পিডিএফ পান
প্রথমে ফন্টের হিসাব নিন, তারপর কোন পথে যেতে হবে তা সিদ্ধান্ত নিন; সেগুলো প্রতিস্থাপনের জন্য তাড়াহুড়ো করবেন না।
যদি সনাক্তকরণের ফলাফল দেখায় যে ফন্ট প্রোগ্রামটি খালি রয়েছে
এটি রেকর্ড করুন এবং পৃষ্ঠার বিষয়বস্তু নিশ্চিত করুন; এম্বেডটি সম্পূর্ণ বলে ধরে নেবেন না।
যদি নথিতে সাবসেট ফন্ট থাকে
ফন্ট চিহ্নগুলি রাখুন এবং সরাসরি ত্রুটি হিসাবে বিচার করার পরিবর্তে তাদের স্বাভাবিক হিসাবে বিবেচনা করুন।
যদি বাস্তব নথি দিয়ে যাচাইকরণের প্রয়োজন হয়
আপনার অনুমতি নিয়ে আপনি যে ডিসেনসিটাইজেশন নমুনা আপলোড করেছেন তা ব্যবহার করুন এবং এই নিবন্ধের চেকলিস্ট আইটেমগুলির সাথে ফলাফলগুলি যাচাই করুন।
❓ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)
1. বেস 14 ফন্ট রেফারেন্সের অর্থ কি ফন্টটি ইতিমধ্যে এম্বেড করা হয়েছে?
না। Base14 ফন্ট রেফারেন্স মানে এই নয় যে ফন্ট প্রোগ্রামটি এম্বেড করা হয়েছে; extract_font দ্বারা ফেরত দেওয়া ফন্ট বাইটগুলি খালি কিনা তা আপনাকে পরীক্ষা করতে হবে।
2. সাবসেট ফন্টে কি অবশ্যই কোনও সমস্যা আছে?
অগত্যা নয়। সাবসেট ফন্টগুলি ত্রুটি হিসাবে অভিন্নভাবে চিহ্নিত করা উচিত নয়; কেবল ফন্ট সনাক্তকারীগুলি রাখুন এবং সরাসরি তাদের ক্ষতিগ্রস্থ হিসাবে বিচার করবেন না।
3. যদি ফন্ট তালিকাটি খালি থাকে তবে এর অর্থ কি পৃষ্ঠায় কোনও সমস্যা রয়েছে?
অগত্যা নয়। তালিকাটি খালি থাকলে, প্রথমে পৃষ্ঠার বিষয়বস্তু পরীক্ষা করুন; পৃষ্ঠাটি একটি চিত্র বা অন্য অঙ্কন পথ হতে পারে।
4. একটি স্ক্রিপ্টের "নিরাপদ" ফলাফল কি সরাসরি অনুবাদের সিদ্ধান্তের জন্য ব্যবহার করা যেতে পারে?
না। কোড আউটপুট কেবল একটি প্রযুক্তিগত সংকেত এবং লক্ষ্য ভাষা গ্লিফগুলি ব্যবহারযোগ্য কিনা তা নির্ধারণ করতে পারে না, বা লাইসেন্সটি এম্বেডিংগুলির সংশোধনের অনুমতি দেয় কিনা তা মূল্যায়ন করতে পারে না।
📝 সারসংক্ষেপ
ফন্ট ইনভেন্টরি পিডিএফ অনুবাদের আগে একটি মৌলিক পদক্ষেপ; এটি আপনাকে ডকুমেন্টের সম্পাদনাযোগ্যতা এবং রেন্ডারিং স্থায়িত্ব মূল্যায়ন করতে সহায়তা করে। ফাইলটি পাওয়ার পরে, প্রথমে ফন্টটি পরীক্ষা করুন, তারপরে পথটি নির্বাচন করুন এবং অনুবাদের পরে, শিরোনাম, বডি টেক্সট এবং ক্যাপশনগুলির মধ্যে চিঠিপত্র যাচাই করুন।
এখনই অভিজ্ঞতা: অনুবাদ শুরু করতে আপনার নথি আপলোড করুন, মূল ফর্ম্যাটিং সংরক্ষণ করুন


