কেন ডবল-কলামের পিডিএফ সিরিয়ালি বের করা হয়? প্রথমে স্থানাঙ্কগুলি রাখুন এবং তারপরে পড়ার ক্রম সম্পর্কে কথা বলুন
ব্যাখ্যা করুন যে ডবল-কলামের পিডিএফ টেক্সট সিরিয়ালাইজেশন ফরম্যাটের শব্দার্থিক কাঠামোর অভাব থেকে উদ্ভূত হয়, স্পষ্ট করুন যে সাজানোর প্যারামিটারটি শুধুমাত্র একটি জ্যামিতিক সাজানোর। স্থানাঙ্ক বিভাজনের উপর ভিত্তি করে একটি সিন্থেটিক পাইথন উদাহরণ ক্রম পুনর্গঠনের যুক্তি প্রদর্শন করতে, প্রযোজ্য সীমানা স্পষ্ট করতে এবং ম্যানুয়াল পর্যালোচনা রেড লাইনগুলিকে স্পষ্ট করতে এবং OmniDoc অনুবাদ কর্মপ্রবাহকে সংযুক্ত করে এমন একটি বাস্তবসম্মত স্বীকৃতির পথ প্রদান করা হয়।
ডবল-কলাম পিডিএফ থেকে প্রাপ্ত পাঠ্য ক্রমগুলি প্রায়শই ভুলভাবে স্বীকৃত হয় না, তবে ভুল ক্রমে পড়া হয়। এই নিবন্ধটি সেই পাঠকদের জন্য যাদের ডবল-কলামের PDF যেমন কাগজপত্র এবং প্রতিবেদনগুলি থেকে পাঠ্য বের করতে হবে এবং তারপর সেগুলি অনুবাদ বা সংগঠিত করতে হবে৷
পাঠকরা সাধারণত এই পরিস্থিতির সম্মুখীন হন: বাম কলামের অর্ধেক পথ, পরবর্তী বাক্যটি ডান কলামে সূত্র ব্যাখ্যা দ্বারা অনুসরণ করা হয়। অক্ষর সব সঠিকভাবে স্বীকৃত হতে পারে, কিন্তু ক্রম ব্যাহত হয়. এই নিবন্ধটি প্রথমে ব্যাখ্যা করে যে কেন সিরিয়ালাইজেশন ঘটে এবং তারপর একটি সিন্থেটিক উদাহরণ ব্যবহার করে প্রদর্শন করে যে কিভাবে স্থানাঙ্ক দ্বারা বিভাজন করে ক্রম পুনর্গঠন করা যায়। অবশেষে, এটি প্রযোজ্য সীমানা এবং গ্রহণযোগ্যতা তালিকা দেয় যা আপনার নিজের ফাইলগুলিতে এটি ব্যবহার করা যেতে পারে কিনা তা বিচার করতে আপনাকে সুবিধার্থে।
কেন ডবল-কলাম পিডিএফ সিরিয়ালি বের করা হয়? এক বাক্যে উপসংহার
প্রথমে স্থানাঙ্ক এবং উৎস পৃষ্ঠা রাখুন, এবং তারপর আঞ্চলিক নিয়ম অনুযায়ী সাজান। পুরো পৃষ্ঠাটিকে একটি দীর্ঘ স্ট্রিংয়ে সরাসরি সংকুচিত করবেন না।
| আপনার অবস্থা | প্রস্তাবিত অভ্যাস | কারণ |
|---|---|---|
| সাধারণ দুই-কলামের কাগজ, টেক্সট সিরিয়ালাইজেশন | প্রথমে একটি বিভাগের বাম কলামটি পড়ুন, তারপর ডান কলামটি পড়ুন | পর্যায়ক্রমে লাইন-বাই-লাইন স্প্লিসিং অনুচ্ছেদ ধ্বংস করবে |
| শুধু এটি একটি দ্রুত চেষ্টা দিতে চেয়েছিলেন | sort চালু এবং বন্ধ করার ফলাফল তুলনা করুন | sort শুধুমাত্র জ্যামিতিক বাছাই করে, নিয়ম পৃষ্ঠাগুলির জন্য উপযুক্ত |
| পৃষ্ঠাগুলিতে ক্রস-কলাম শিরোনাম, পার্শ্ব নোট এবং পাদটীকা রয়েছে | অঞ্চল অনুসারে আলাদাভাবে প্রক্রিয়া করুন এবং আঞ্চলিক সম্পর্ক পরীক্ষা করুন | শুধুমাত্র জ্যামিতিক বাছাই এই বিষয়বস্তুর বৈশিষ্ট্য নির্ধারণ করতে পারে না। |
| অনুবাদ মডেল হস্তান্তর করা প্রয়োজন | স্থানাঙ্ক এবং পৃষ্ঠা নম্বর রাখুন, প্রথমে অর্ডার সাজান এবং তারপর অনুবাদ করুন | ভুল ক্রমে প্রসঙ্গগুলি মডেল পরিবর্তন করেও প্রতিকার করা কঠিন। |
অর্ডার এলোমেলো কেন?
PDF পাঠ্যের প্রতিটি অনুচ্ছেদের অবস্থান রেকর্ড করে, "এটি কোন অনুচ্ছেদ এবং এটি কোন কলামের অন্তর্গত?" যখন নিষ্কাশন টুল স্থানাঙ্ক দ্বারা আউটপুট করে, যদি কোন এলাকার নিয়ম না থাকে, বাম এবং ডান কলামের পাঠ্য ইন্টারলেস হতে পারে।
এই ধরনের সমস্যা অগত্যা সনাক্তকরণ পর্যায়ে উত্থাপিত হয় না. হয়তো শব্দগুলো সব সঠিকভাবে উল্লেখ করা হয়েছে, কিন্তু ভুল ক্রমে। অতএব, সমাধানের ধারণাটি বারবার স্বীকৃতি বা অনুবাদ লিঙ্কগুলি পরিবর্তন করার পরিবর্তে বাছাই এবং জোনিংয়ের উপর দৃষ্টি নিবদ্ধ করা উচিত।
প্রথমে স্থানাঙ্কগুলি রাখুন এবং তারপরে পড়ার ক্রম সম্পর্কে কথা বলুন
অর্ডারিং সমস্যা সমাধানের আগে, পাঠ্যের স্থানাঙ্ক এবং মূল পৃষ্ঠাটি সংরক্ষণ করুন। পুরো পৃষ্ঠাটিকে একটি দীর্ঘ স্ট্রিংয়ে সংকুচিত করার জন্য তাড়াহুড়ো করবেন না।
- এলাকার মালিকানার পরবর্তী বিচারের সুবিধার্থে প্রতিটি টেক্সট ব্লকের চারটি স্থানাঙ্ক রাখুন।
- ব্যাকট্র্যাকিং এবং ম্যানুয়াল যাচাইকরণের সুবিধার্থে উৎস পৃষ্ঠা নম্বর রাখুন।
- একবার আঞ্চলিক তথ্য হারিয়ে গেলে, পরবর্তী অনুবাদগুলি ভুল প্রসঙ্গ পাবে, এবং একটি অনুবাদ মডেল পরিবর্তন করা এটি প্রতিকার করতে সক্ষম হবে না।
sort=True চেষ্টা করার মতো, কিন্তু এটি একটি লেআউট বোঝার নয়
PyMuPDF বিভিন্ন নিষ্কাশন ফর্ম যেমন পাঠ্য, শব্দ, ব্লক ইত্যাদি প্রদান করে। sort এর নির্দিষ্ট প্রক্রিয়াকরণ আউটপুট প্রকার এবং সংস্করণের সাথে পরিবর্তিত হয়। এটি সাধারণত একটি নির্দিষ্ট টাইপসেটিং অ্যালগরিদম হিসাবে বর্ণনা করা যায় না, বা এটি সমস্ত নথির পড়ার ক্রম পুনরুদ্ধার করার প্রতিশ্রুতিও দেওয়া যায় না।
ব্যবহারের জন্য পরামর্শ নিম্নরূপ:
- নিয়ম পৃষ্ঠার জন্য, আপনি প্রথমে বাছাই চালু এবং বন্ধ করার ফলাফল তুলনা করতে পারেন।
- ক্রস-কলাম শিরোনাম, পার্শ্ব নোট এবং পাদটীকা সহ পৃষ্ঠাগুলির জন্য, এলাকার সম্পর্ক আবার পরীক্ষা করা আবশ্যক।
- PDF-এ স্ট্রাকচারাল ট্যাগ থাকতে পারে, কিন্তু এর মানে এই নয় যে বর্তমানে ব্যবহৃত এক্সট্রাকশন ইন্টারফেস স্বয়ংক্রিয়ভাবে আপনাকে আপনার প্রয়োজনীয় শব্দার্থিক অনুচ্ছেদ ট্রি দেবে।
এই নিবন্ধটি সর্বজনীন লেআউট স্বীকৃতি বাস্তবায়ন করে না, তবে শুধুমাত্র "কীভাবে বিদ্যমান আঞ্চলিক নিয়ম অনুসারে সাজানো যায়" প্রদর্শন করে এবং ক্ষমতার সীমানা স্পষ্টভাবে ব্যাখ্যা করে। ইন্টারফেস এবং নিষ্কাশন ফর্মের জন্য, অনুগ্রহ করে PyMuPDF অফিসিয়াল টেক্সট এক্সট্রাকশন গাইড পড়ুন।
সমস্যাটি ব্যাখ্যা করতে পাঁচটি সংশ্লেষিত পাঠ্য ব্লক ব্যবহার করুন
উদাহরণ পৃষ্ঠাটি 600 পয়েন্ট প্রশস্ত, কলামগুলির মধ্যে একটি 300-পয়েন্ট সীমানা সহ; শীর্ষের 80 পয়েন্টের মধ্যে ক্রস-কলাম শিরোনাম এলাকা, এবং তার নীচে পাঠ্য এলাকা। ইনপুটটি ইচ্ছাকৃতভাবে স্ক্র্যাম্বল করা হয়েছে: ডান কলামের দ্বিতীয় অনুচ্ছেদটি প্রথমে আসে এবং বাম কলামের প্রথম অনুচ্ছেদটি শেষ হয়৷ প্রতিটি টিপলে আয়তক্ষেত্র এবং পাঠ্যের চারটি স্থানাঙ্ক রয়েছে। এটি একটি সরলীকৃত কাঠামো যা প্রদর্শনের উদ্দেশ্যে সংজ্ঞায়িত করা হয়েছে এবং এটি get_text("blocks") এর সম্পূর্ণ রিটার্ন মানের সমতুল্য নয়।
প্রত্যাশিত ফলাফল হওয়া উচিত: শিরোনাম, বাম কলামে প্রথম অনুচ্ছেদ, বাম কলামে দ্বিতীয় অনুচ্ছেদ, ডান কলামে প্রথম অনুচ্ছেদ, ডান কলামে দ্বিতীয় অনুচ্ছেদ। কলামের সীমানা অতিক্রম করে এমন টেক্সট ব্লকগুলিকে অবশ্যই ব্যতিক্রম তালিকায় যেতে হবে, যাতে চুপচাপ ফেলে দেওয়া বা বাম কলামে জুতোর কাঁটা না দিয়ে।
একটি ছোট উদাহরণ যা সম্পূর্ণরূপে চালানো যেতে পারে
নিম্নলিখিত উদাহরণগুলি শুধুমাত্র পাইথন স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে। PyMuPDF এর সাথে সংযোগ করার সময়, আপনি ব্লক নিষ্কাশন ফলাফল থেকে প্রথম পাঁচটি ক্ষেত্র রাখতে পারেন এবং প্রথমে নন-টেক্সট ব্লকগুলি বাদ দিতে পারেন। উদাহরণটি বাহ্যিক ফাইল খোলে না, OCR প্রয়োজন হয় না এবং স্বয়ংক্রিয়ভাবে কলামের সীমানা অনুমান করে না।
def order_known_layout(blocks, split_x=300, title_bottom=80):
groups = {"title": [], "left": [], "right": []}
rejected = []
for block in blocks:
x0, y0, x1, y1, text = block
if x1 <= x0 or y1 <= y0:
rejected.append(block)
continue
if y1 <= title_bottom:
region = "title"
elif y0 < title_bottom:
rejected.append(block)
continue
elif x1 <= split_x:
region = "left"
elif x0 >= split_x:
region = "right"
else:
rejected.append(block)
continue
groups[region].append(block)
ordered = []
for region in ("title", "left", "right"):
ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
return [b[4] for b in ordered], rejected
sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
(40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
(40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")
উদাহরণে 80 এবং 300 এই যৌগিক পৃষ্ঠার সেটিংস থেকে এসেছে এবং সব পিডিএফ-এ প্রযোজ্য অভিজ্ঞতামূলক থ্রেশহোল্ড নয়। যখন পরবর্তী পৃষ্ঠার বাম এবং ডান কলামের প্রস্থ পরিবর্তিত হয়, যদি পূর্ববর্তী পৃষ্ঠার প্যারামিটার ব্যবহার করা হয়, "প্রোগ্রামটি স্বাভাবিকভাবে চলে কিন্তু বিষয়বস্তু ভুল" ঘটতে পারে। আঞ্চলিক নিয়ম পৃষ্ঠা অনুসরণ করা উচিত, অন্তত নিয়ম সংস্করণ এবং পৃষ্ঠা আকার রেকর্ড.
📊 মূল তুলনা
| প্রক্রিয়াকরণ পদ্ধতি | কি করা যেতে পারে | কি মনোযোগ দিতে হবে |
|---|---|---|
sort=True সরাসরি ব্যবহার করুন | স্থানাঙ্ক দ্বারা জ্যামিতিক বাছাই করুন। আপনি প্রথমে নিয়ম পৃষ্ঠায় এটি চেষ্টা করতে পারেন। | ক্রস-কলাম শিরোনাম, সাইড নোট এবং ফুটনোটের মালিকানা বোঝেন না |
| স্থানাঙ্ক বিভাজনের উপর ভিত্তি করে সাজান | প্রথমে এলাকাটি ভাগ করুন এবং তারপর পরিদর্শনের সুবিধার্থে বিভাগ দ্বারা পড়ুন। | পার্টিশন থ্রেশহোল্ড পৃষ্ঠার উপর নির্ভর করে এবং একটি পৃষ্ঠার ভিত্তিতে যাচাই করা প্রয়োজন। |
| ম্যানুয়ালি লেখা পড়ার ক্রম | ফলাফলটি সবচেয়ে নিয়ন্ত্রিত এবং মূল নথি যাচাইয়ের জন্য উপযুক্ত | উচ্চ খরচ, স্পট চেক এবং বেঞ্চমার্ক জন্য উপযুক্ত |
শুধুমাত্র গ্রহণের সময় কোন ত্রুটি আছে কিনা তা পরীক্ষা করবেন না
| আইটেম চেক করুন | কি দেখতে হবে | মিল না হলে কি করবেন |
|---|---|---|
| এলাকার আদেশ | শিরোনামের পরে, প্রথমে সম্পূর্ণ বাম কলাম, তারপর সম্পূর্ণ ডান কলাম | পার্টিশনের নিয়মগুলি পরীক্ষা করুন এবং স্ট্রিং পরিবর্তন করে প্যাচ করবেন না |
| বিষয়বস্তু সংরক্ষণ | গৃহীত ব্লকের সংখ্যা এবং প্রত্যাখ্যাত ব্লকের সংখ্যা ইনপুট ব্লকের সংখ্যার সমান | ডেলিভারি ব্লক করুন এবং সাইলেন্ট ব্লক লস আছে কিনা চেক করুন |
| ক্রস-বার পাঠ্য | অস্বীকার তালিকায় উপস্থিত হয় | একটি নতুন বাধা বিভাগ যোগ করুন বা ম্যানুয়াল রায়ে জমা দিন |
| ঘোরান এবং ক্রপ | ইনপুট ব্লক পার্টিশন হিসাবে একই স্থানাঙ্ক সিস্টেম ব্যবহার করে | প্রথমে স্থানাঙ্ক একত্রিত করুন, তারপর অন্তর্ভুক্তির রায় করুন |
| হেডার, ফুটার | ব্যবসার নিয়ম অনুসারে আলাদাভাবে শ্রেণীবদ্ধ করা হয়েছে | নিচের সব লেখা মুছে ফেলবেন না |
একটি বাস্তব কাগজেরও এই ধরনের কাঠামো থাকতে পারে: মাঝখানে একটি ক্রস-কলাম চিত্র সন্নিবেশ করান এবং চিত্রের নীচে ডবল কলাম পুনরায় চালু করুন। এই সময়ে, পৃষ্ঠাটিকে প্রথমে উপরের এবং নীচের বিভাগে বিভক্ত করতে হবে এবং তারপরে আলাদাভাবে সাজাতে হবে। এই নিবন্ধে পার্টিশনের এককালীন তিনটি গ্রুপ যথেষ্ট নয়। এখানে পড়ার দিকটি চীনা উল্লম্ব বিন্যাস, ডান-থেকে-বামে পাঠ্য এবং জটিল প্রান্তিকতায় প্রয়োগ করা উচিত নয়।
🎯 কোন পদ্ধতি আপনার জন্য উপযুক্ত?
যদি তুমি......
- শুধুমাত্র একক-কলাম বা ডাবল-কলামের পৃষ্ঠাগুলি যা নিয়মগুলি প্রক্রিয়া করতে হবে: প্রথমে
sortচালু এবং বন্ধ করার ফলাফলগুলি তুলনা করুন এবং তারপরে পার্টিশন নিয়মগুলি প্রয়োজন কিনা তা নির্ধারণ করুন। - বিস্তৃত শিরোনাম, চিত্র বা পাদটীকা সহ কাগজপত্র পরিচালনা করুন: পৃষ্ঠাগুলিকে বিভাগ দ্বারা ভাগ করুন এবং স্প্যান করা সামগ্রীর জন্য ব্যতিক্রম তালিকা সেট করুন।
- অনুবাদটি অন্যদের কাছে পৌঁছে দিতে হবে: স্থানাঙ্ক এবং পৃষ্ঠা নম্বর রাখুন, এবং গ্রহণযোগ্যতা তালিকা অনুযায়ী একে একে পরীক্ষা করুন। অপারেশন চলাকালীন ত্রুটি আছে কিনা তা পরীক্ষা করবেন না।
- নিজে স্ক্রিপ্ট বজায় রাখতে চান না: আপনি সরাসরি তৈরি নথি অনুবাদ টুল ব্যবহার করতে পারেন এবং অনুক্রমিক চেকলিস্টের একই সেট দিয়ে অনুবাদটি পরীক্ষা করতে পারেন।
কিভাবে OmniDoc এর অনুবাদ প্রক্রিয়া গ্রহণ করবেন
স্ব-নির্মিত স্ক্রিপ্টের মূল্য স্পষ্টভাবে গ্রহণের নিয়ম লেখার মধ্যে নিহিত; রেডিমেড ট্রান্সলেশন টুলের মূল্য ফাইল এবং অনুবাদের মধ্যে অপারেশনাল লিঙ্ক কমানোর মধ্যে নিহিত। উভয়ের মধ্যে কোন বিরোধ নেই। OmniDoc (পণ্য পোর্টাল) একটি নথি অনুবাদ পোর্টাল প্রদান করে, এবং অফিসিয়াল ওয়েবসাইট ওসিআর, শব্দকোষ, এবং দ্বিভাষিক তুলনার মতো ফাংশনগুলিও প্রবর্তন করে৷ আপনি একটি সংবেদনশীল কাগজ নির্বাচন করতে পারেন যা আপনার কাছে আপলোড করার অনুমতি রয়েছে এবং একই অনুক্রমিক চেকলিস্ট ব্যবহার করে অনুবাদটি পরীক্ষা করতে পারেন।
নিম্নলিখিত আইটেমগুলি পরীক্ষা করার উপর ফোকাস করুন:
- ক্রস-কলাম শিরোনামের পরে প্রথম বাক্যটি সঠিকভাবে সংযুক্ত কিনা।
- চিত্রের ক্যাপশনগুলি কি পাঠ্যের সাথে যুক্ত করা হয়েছে?
- পাদটীকা রেফারেন্স এখনও সঠিক অবস্থানে মানচিত্র কিনা।
এটি বিতরণযোগ্য মূল্যায়ন করছে, OmniDoc এর অভ্যন্তরীণ অ্যালগরিদম অনুমান করছে না। যদি ফলাফলগুলি প্রয়োজনীয়তা পূরণ না করে, অনুগ্রহ করে মূল পৃষ্ঠা এবং ত্রুটি বিভাগটি রাখুন, প্রথমে সমস্যাটি সনাক্তকরণ, বাছাই বা অনুবাদ প্রক্রিয়ার মধ্যে রয়েছে কিনা তা খুঁজে বের করুন এবং তারপরে কীভাবে এটি সংশোধন করবেন তা নির্ধারণ করুন।
❓ প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
1. ডাবল-কলাম পিডিএফ সিরিয়াল, এটি কি ভুলভাবে স্বীকৃত?
অনিশ্চিত শব্দগুলি সব সঠিকভাবে স্বীকৃত হতে পারে, কিন্তু সমস্যাটি প্রায়শই পড়ার ক্রমে থাকে, তাই বাছাই এবং আঞ্চলিক নিয়মগুলি প্রথমে পরীক্ষা করা উচিত।
2. sort=True ডাবল কলাম অর্ডারের সমস্যা সরাসরি সমাধান করতে পারে?
এটা সাধারণীকরণ করা যাবে না. sort-এর হ্যান্ডলিং আউটপুট প্রকার এবং সংস্করণের সাথে পরিবর্তিত হয়, এটি একটি লেআউট বোঝার নয় এবং সমস্ত নথির পড়ার ক্রম পুনরুদ্ধার করার প্রতিশ্রুতি দিতে পারে না। আপনি প্রথমে নিয়ম পৃষ্ঠাটি চেষ্টা করতে পারেন, এবং আপনাকে ক্রস-কলাম সামগ্রী সহ পৃষ্ঠাগুলির জন্য আঞ্চলিক সম্পর্কও পরীক্ষা করতে হবে৷
3. কেন পুরো পৃষ্ঠাটিকে একটি দীর্ঘ স্ট্রিংয়ে সংকুচিত করা যায় না?
একবার স্থানাঙ্ক এবং এলাকার তথ্য হারিয়ে গেলে, পরবর্তী অনুবাদগুলি ভুল প্রসঙ্গ পাবে, এবং একটি অনুবাদ মডেল পরিবর্তন করা এটি প্রতিকার করতে সক্ষম হবে না।
4. উদাহরণের 80 পয়েন্ট এবং 300 পয়েন্ট কি সরাসরি অন্যান্য পিডিএফ-এ ব্যবহার করা যেতে পারে?
পারে না তারা এই যৌগিক পৃষ্ঠার জন্য সেটিংস মাত্র। যখন পৃষ্ঠার আকার বা কলামের প্রস্থ পরিবর্তিত হয়, নিয়ম সংস্করণটি যাচাই করা উচিত এবং পৃষ্ঠায় পৃষ্ঠার ভিত্তিতে আলাদাভাবে রেকর্ড করা উচিত।
📝 সারাংশ
ডবল-কলাম পিডিএফ-এ অর্ডার সংক্রান্ত সমস্যাগুলির জন্য, স্থানাঙ্ক এবং উত্স পৃষ্ঠাগুলি প্রথমে ধরে রাখা উচিত, তারপর আঞ্চলিক নিয়মগুলি ব্যবহার করে প্রক্রিয়া করা উচিত এবং স্বীকৃতি চেকলিস্ট অনুসারে আইটেম অনুসারে আইটেম চেক করা উচিত। স্ব-নির্মিত স্ক্রিপ্টগুলি নিয়মগুলি স্পষ্টভাবে লেখার জন্য উপযুক্ত, এবং রেডিমেড সরঞ্জামগুলি অপারেশন লিঙ্কগুলি হ্রাস করার জন্য উপযুক্ত। দুটি একসাথে ব্যবহার করা যেতে পারে।
এটি এখনই চেষ্টা করুন: অনুবাদ শুরু করতে নথিটি আপলোড করুন, মূল বিন্যাস বজায় রেখে৷


