আমি যদি পিডিএফ-এর বিষয়বস্তুর পৃষ্ঠায় ক্লিক করতে পারি কিন্তু নিষ্কাশনের পর স্তরটি হারাতে পারি তাহলে আমার কী করা উচিত?
লেখার আগে বুকমার্ক শ্রেণিবিন্যাস অবশ্যই পরীক্ষা করা উচিত। প্রথম আইটেমটি একটি স্তর, এবং পরবর্তী আইটেমগুলি সর্বাধিক এক স্তর দ্বারা বৃদ্ধি করা যেতে পারে; উদাহরণটি অবৈধ স্তর এবং সীমার বাইরের পৃষ্ঠা নম্বরগুলি প্রত্যাখ্যান করে এবং ডিরেক্টরি কাঠামো জাল করার জন্য স্বয়ংক্রিয়ভাবে স্তর পরিবর্তন করে না। বুকমার্ক পৃষ্ঠা সংখ্যা এক থেকে শুরু হয়, এবং পৃষ্ঠা সূচী সাধারণত শূন্য থেকে শুরু হয়।
পিডিএফ-এর বিষয়বস্তু পৃষ্ঠার টেবিলটি সাধারণত পাঠকের মধ্যে পুনঃনির্দেশিত করা যেতে পারে, তবে একটি স্ক্রিপ্ট ব্যবহার করে বের করার পরে, শ্রেণিবিন্যাস সমতল হতে পারে, পৃষ্ঠা নম্বরগুলি ভুল স্থানান্তরিত হতে পারে, এমনকি সূচকটি অস্বাভাবিকও হতে পারে। অনিয়মিত বুকমার্ক স্ট্রাকচারের সাথে স্ক্যান করা ফাইল বা ফাইল মার্জ করার সময় এই ধরনের সমস্যা সাধারণ। নিষ্কাশন ফলাফল সরাসরি ডাউনস্ট্রিম ব্যবহারকারীদের কাছে হস্তান্তর করা হলে, অনুবাদ বিভাজন এবং লিঙ্কিংয়ে ত্রুটি ঘটতে পারে।
এই নিবন্ধটি এমন ডেভেলপার এবং ডকুমেন্টেশন টিমের জন্য যাদের ব্যাচ প্রক্রিয়া পিডিএফ ক্যাটালগ প্রয়োজন। পড়ার পরে, আপনি get_toc() রিটার্ন মানের অর্থ বুঝতে পারেন, স্তর এবং পৃষ্ঠা নম্বরগুলির জন্য যাচাইকরণের নিয়মগুলি আয়ত্ত করতে পারেন এবং কোন পরিস্থিতিতে ম্যানুয়াল যাচাইকরণে রূপান্তর করা উচিত তা জানতে পারেন৷ এই নিবন্ধটি প্রক্রিয়াকরণ পদ্ধতি প্রদর্শন করার জন্য একটি সিন্থেটিক নমুনা ব্যবহার করে, এবং কোডটি একটি বিচ্ছিন্ন পরিবেশে নমুনা দ্বারা পরীক্ষা করা হয়েছে, তবে এটি সমস্ত বাস্তব ফাইল বা পণ্যের প্রভাবগুলির গ্যারান্টি উপস্থাপন করে না। গুরুত্বপূর্ণ নথিগুলি প্রক্রিয়া করার আগে, দয়া করে মূলগুলি রাখুন এবং পাঠ্যের সীমানা এবং গ্রহণযোগ্য আইটেমগুলি অনুসারে সেগুলি পর্যালোচনা করুন৷
বিষয়বস্তুর পৃষ্ঠার PDF টেবিলে ক্লিক করা গেলেও এক্সট্রাকশনের পরে হায়ারার্কি হারিয়ে গেলে আমার কী করা উচিত? এক বাক্যে উপসংহার
প্রথমে যাচাই করুন, তারপর লিখুন: বুকমার্ক স্তরটি অবশ্যই প্রথমে পরীক্ষা করা উচিত, প্রথম আইটেমটিকে প্রথম স্তর হিসাবে গণ্য করা হবে, পরবর্তী স্তরগুলি পূর্ববর্তী আইটেম প্লাস ওয়ানকে অতিক্রম করা উচিত নয় এবং সীমার বাইরে পৃষ্ঠা নম্বর সহ এন্ট্রিগুলি লেখা হবে না৷
| আপনার অবস্থা | প্রস্তাবিত অভ্যাস | কারণ |
|---|---|---|
| ডিরেক্টরি পৃষ্ঠাটি ক্লিক করা যেতে পারে, এবং শ্রেণীবিন্যাস নিষ্কাশনের পরে সমতল বা ভুলভাবে সংযোজিত হয়। | আসল তালিকা পেতে প্রথমে get_toc() ব্যবহার করুন, তারপর এটি ব্যবহারের আগে একে একে যাচাই করুন। | get_toc() দ্বারা প্রত্যাবর্তিত মূল তালিকার কোনো কাঠামোগত বৈধতা নেই |
| পৃষ্ঠা সংখ্যা 0 বা মোট পৃষ্ঠা সংখ্যা অতিক্রম করে | এন্ট্রি এবং লগ বাতিল করুন | সীমার বাইরের পৃষ্ঠা নম্বরগুলি জাম্প ব্যর্থতার কারণ হবে৷ |
get_toc() একটি খালি তালিকা প্রদান করে | পরিবর্তে পাঠ্য বিন্যাস বিশ্লেষণ ব্যবহার করুন এবং অন্ধভাবে পুনরায় চেষ্টা করবেন না | ফাইলে বুকমার্ক মেটাডেটা এমবেড নাও থাকতে পারে |
| একই শিরোনাম একাধিক ভিন্ন পৃষ্ঠা নম্বরের সাথে মিলে যায় | অস্পষ্ট হিসাবে চিহ্নিত করুন, ম্যানুয়াল যাচাইকরণে স্থানান্তর করুন | কোন পৃষ্ঠা নম্বর সঠিক তা স্বয়ংক্রিয়ভাবে নির্ধারণ করতে অক্ষম৷ |
কেন নিষ্কাশন ফলাফল মাত্রা হারায়?
get_toc() [level, title, page] ট্রিপলের একটি তালিকা আউটপুট করার জন্য ডিফল্ট। তাদের মধ্যে, page হল 1 থেকে শুরু হওয়া প্রকৃত পৃষ্ঠা নম্বর, এবং level শুধুমাত্র নেস্টিং গভীরতা প্রতিনিধিত্ব করে এবং ধারাবাহিকতা বা বৈধতার গ্যারান্টি দেয় না।
যদি উৎস পিডিএফ একটি স্ক্যান মার্জ টুল দ্বারা তৈরি করা হয়, সাধারণ সমস্যাগুলির মধ্যে রয়েছে:
- লেভেল জাম্প: উদাহরণস্বরূপ, সরাসরি 1 থেকে 3 পর্যন্ত লাফ দিন
- পৃষ্ঠা নম্বর ব্যতিক্রম: পৃষ্ঠা সংখ্যা 0 বা মোট পৃষ্ঠা সংখ্যা অতিক্রম করে
- শিরোনাম ব্যতিক্রম: শিরোনামে নিয়ন্ত্রণ অক্ষর রয়েছে
ডাউনস্ট্রিম কাজের জন্য সরাসরি ব্যবহার করা হলে, এটি অনুবাদ বিভাগে বিভ্রান্তি বা লিঙ্ক ব্যর্থতার কারণ হবে। আরও প্রতারণামূলকভাবে, কিছু পিডিএফ-এর বিষয়বস্তুর পৃষ্ঠার একটি ভিজ্যুয়াল টেবিল রয়েছে কিন্তু কোনো এম্বেড করা বুকমার্ক মেটাডেটা নেই। get_toc()-এর পক্ষে এই সময়ে একটি খালি তালিকা ফেরত দেওয়া স্বাভাবিক, এবং পরিবর্তে পাঠ্য বিন্যাস বিশ্লেষণ ব্যবহার করা প্রয়োজন।
স্বয়ংসম্পূর্ণ রচনা উদাহরণ
উদাহরণ নির্ভরতার জন্য আমদানি তালিকা দেখুন। কোডটি মেমরিতে ইনপুট তৈরি করে, এবং রান রেকর্ডগুলি আলাদাভাবে প্রদান করা হয় এবং সমস্ত বাস্তব ফাইলের গ্যারান্টি উপস্থাপন করে না।
import pymupdf
def validate(rows, pages):
previous = 0
for level, title, page in rows:
if type(level) is not int or level < 1 or level > previous + 1:
raise ValueError("invalid hierarchy")
if type(page) is not int or not 1 <= page <= pages:
raise ValueError("invalid destination")
if not isinstance(title, str) or not title.strip():
raise ValueError("empty title")
previous = level
return rows
with pymupdf.open() as doc:
for _ in range(3):
doc.new_page()
rows = [[1, "Chapter", 1], [2, "Section", 2], [1, "Appendix", 3]]
doc.set_toc(validate(rows, doc.page_count))
assert doc.get_toc() == rows
assert len(doc.get_toc()) == 3
for bad in [[[2, "Bad", 1]], [[1, "Bad", 99]], [[1, "", 1]]]:
try:
validate(bad, doc.page_count)
except ValueError:
pass
else:
raise AssertionError("invalid outline accepted")
আইনি এবং অবৈধ ইনপুট জন্য প্রক্রিয়াকরণ নিয়ম
সঠিক ইনপুটটি সন্তুষ্ট হওয়া উচিত: [1, doc.page_count] পরিসরে ক্রমাগত স্তর এবং পৃষ্ঠা নম্বর সহ ট্রিপলের একটি তালিকা। উদাহরণস্বরূপ, [[1, "引言", 1], [2, "背景", 2], [1, "方法", 5]] আইনি, দ্বিতীয় স্তরটি প্রথম স্তরের পরে প্রদর্শিত হয় এবং PDF আউটলাইন সিনট্যাক্সের সাথে সামঞ্জস্যপূর্ণ।
সাধারণ ভুল ইনপুট অন্তর্ভুক্ত:
- মাত্রা 0 বা ঋণাত্মক
- পৃষ্ঠা সংখ্যা 0
- পৃষ্ঠার সংখ্যা মোট পৃষ্ঠার সংখ্যা ছাড়িয়ে গেছে
- শিরোনামটি একটি খালি স্ট্রিং বা শুধুমাত্র হোয়াইটস্পেস অক্ষর রয়েছে৷
এই পরিস্থিতিতে, নিবন্ধে দেওয়া পদ্ধতিগুলি নিম্নরূপ:
- অবৈধ পৃষ্ঠা নম্বর সহ এন্ট্রিগুলি এড়িয়ে যান এবং একটি সতর্কতা লগ করুন৷
- কাঠামোগত অখণ্ডতা বজায় রাখার জন্য খালি শিরোনামের জন্য
[untitled]এর মতো স্থানধারক রাখুন। - একটি একক ত্রুটির কারণে সমগ্র ডিরেক্টরির পার্সিং ব্যাহত করবেন না।
যে ক্ষেত্রে স্তরটি 1-এর কম, সে ক্ষেত্রে দুটি কৌশল সম্পর্কে সচেতন হতে হবে: উদাহরণের সারাংশটি অবৈধ স্তরগুলিকে প্রত্যাখ্যান করার এবং স্বয়ংক্রিয়ভাবে সেগুলিকে সংশোধন না করার পক্ষে সমর্থন করে, যখন নিবন্ধে নিয়মের বর্ণনাটি হল এটিকে 1-তে বাধ্য করা৷ অনুগ্রহ করে আপনার প্রক্রিয়া অনুসারে উভয়ের মধ্যে সিদ্ধান্ত নিন৷ এছাড়াও মনে রাখবেন যে এই নিয়মগুলি ডাউনস্ট্রিম প্রক্রিয়াগুলির দৃঢ়তা নিশ্চিত করার জন্য ডিজাইন করা হয়েছে এবং PDF স্ট্যান্ডার্ডের বাধ্যতামূলক প্রয়োজনীয়তা নয়। প্রকৃত পরীক্ষায় দেখা গেছে যে যখন পৃষ্ঠা নম্বরটি সীমানা অতিক্রম করে, তখন PyMuPDF একটি সতর্কতা প্রিন্ট করবে কিন্তু একটি ব্যতিক্রম নিক্ষেপ করবে না। অতএব, যাচাইকরণ ফাংশন সক্রিয়ভাবে ফিল্টার করতে হবে এবং লাইব্রেরির আচরণের উপর নির্ভর করতে পারে না।
📊 মূল তুলনা
বিভিন্ন নথির পরিস্থিতিতে, get_toc() এর ফলাফল এবং প্রস্তাবিত প্রক্রিয়াকরণ পদ্ধতি ভিন্ন:
| ডকুমেন্টেশন | get_toc() ফলাফল | প্রস্তাবিত হ্যান্ডলিং |
|---|---|---|
| বুকমার্ক এবং কাঠামোগতভাবে আইনি | ট্রিপলেট লিস্ট ফেরত দিন | যাচাইকরণের পরে সরাসরি ব্যবহার করুন |
| বুকমার্ক বিদ্যমান কিন্তু শ্রেণিবিন্যাস বা পৃষ্ঠা নম্বর অস্বাভাবিক | ব্যতিক্রমগুলির একটি তালিকা ফেরত দেয় | লগগুলি ফিল্টার এবং রেকর্ড করুন এবং প্রয়োজনে ম্যানুয়াল শ্রমে স্থানান্তর করুন |
| ভিজ্যুয়াল সংস্করণে বিষয়বস্তুর একটি সারণী পৃষ্ঠা রয়েছে তবে কোনও বুকমার্ক নেই | খালি তালিকায় ফিরে যান | পাঠ্য বিন্যাস বিশ্লেষণে স্যুইচ করুন |
| ইপিইউবির মতো নথিগুলি পুনরায় সাজান | পৃষ্ঠা নম্বর ফর্ম্যাটটি হ'ল (অধ্যায়, পিএনও) | এই পৃষ্ঠা নম্বর যাচাইকরণ যুক্তি প্রযোজ্য নয় এবং ডেডিকেটেড প্রসেসিং প্রয়োজন |
গ্রহণযোগ্যতার মানদণ্ড এবং ম্যানুয়াল পর্যালোচনা সীমানা
নীচের সারণীটি কেবল পিডিএফ ক্যাটালগ মেটাডেটার নিষ্কাশন পর্যায়ে ফোকাস করে:
| ঘটনাটি পর্যবেক্ষণ করুন | বিষয়টি পরিচালনা করার সিদ্ধান্ত | অটোমেশন উপযুক্ত কিনা |
|---|---|---|
| পৃষ্ঠা নম্বর মোট পৃষ্ঠার সংখ্যার চেয়ে 0 বা বেশি | এন্ট্রিটি পরিত্যাগ করুন এবং এটি লগ করুন | হ্যাঁ |
| স্তরগুলি 1 এর চেয়ে কম বা অ-পূর্ণসংখ্যাগুলি | উপরের নিয়ম অনুসারে হ্যান্ডেল করুন (পূর্ববর্তী ব্যাখ্যা দেখুন) | হ্যাঁ |
| শিরোনামগুলি সম্পূর্ণ ফাঁকা বা বিশুদ্ধ প্রতীকী | [untitled] দিয়ে প্রতিস্থাপন করুন | হ্যাঁ |
| জাম্পিং লেভেল (উদাঃ, 1 থেকে 3) | মাঝের স্তরগুলি পূরণ না করে মূল স্তরগুলি ধরে রাখুন | হ্যাঁ (কাঠামোগতভাবে আইনি) |
| একই শিরোনামটি একাধিক বিভিন্ন পৃষ্ঠা সংখ্যার সাথে মিলে যায় | অস্পষ্ট হিসাবে চিহ্নিত করা হয়েছে, ম্যানুয়ালে রূপান্তরিত হয়েছে | না |
| কোনও শ্রেণিবদ্ধ পরিবর্তন ছাড়াই 200 টিরও বেশি এন্ট্রি | সন্দেহজনক ওসিআর ভুল সনাক্তকরণের জন্য ম্যানুয়াল যাচাইকরণ প্রয়োজন | না |
| বাহ্যিক URI বা জাভাস্ক্রিপ্ট ক্রিয়াকলাপ অন্তর্ভুক্ত | অ-পৃষ্ঠা পুনর্নির্দেশগুলি ফিল্টার করুন | হ্যাঁ (নিরাপত্তা নীতি) |
| ইপিইউবি, পৃষ্ঠা নম্বর (অধ্যায়, পিএনও) এর মতো নথিগুলি পুনরায় সাজান | এই পৃষ্ঠা নম্বর যাচাইকরণ যুক্তি প্রযোজ্য নয় | না (বিশেষ চিকিত্সা প্রয়োজন) |
মনে রাখবেন যে কোড প্রদর্শনটি কেবল কাঠামোগত বৈধতা পরীক্ষা করে; জাম্পের নির্ভুলতা যাচাই করার জন্য এন্ড-টু-এন্ড প্রভাবগুলিও রেন্ডারিংয়ের সাথে মিলিত হওয়া দরকার।
🎯 কোন পদ্ধতিটি আপনার জন্য উপযুক্ত?
যদি আপনার ব্যাচ এক্সট্রাক্ট ডিরেক্টরি প্রয়োজন হয়
প্রথমে, get_toc() এর ফলাফলগুলিতে কাঠামোগত বৈধতা সম্পাদন করুন, তারপরে সেগুলি পরবর্তী ওয়ার্কফ্লোতে লিখুন এবং যাচাইকরণের জন্য লগগুলি রাখুন।
যদি আপনার পিডিএফে চাক্ষুষভাবে বিষয়বস্তুর একটি সারণী থাকে তবে খালি থাকে
বারবার get_toc() চেষ্টা করবেন না; পাঠ্য বিন্যাস বিশ্লেষণ এবং প্রক্রিয়াকরণে স্যুইচ করুন।
যদি আপনার ডিরেক্টরি এন্ট্রির নাম একই তবে আলাদা পৃষ্ঠা থাকে
এই এন্ট্রিগুলি ম্যানুয়ালি যাচাই করুন; স্বয়ংক্রিয়ভাবে পৃষ্ঠা নম্বরগুলির মধ্যে একটি নির্বাচন করবেন না।
আপনি যদি অনুবাদ প্রক্রিয়ায় নথি হস্তান্তর করতে চান,
প্রথমত, অনুচ্ছেদ বিভ্রান্তি এড়াতে অনুবাদ করার আগে বিষয়বস্তু কাঠামো এবং পৃষ্ঠা সংখ্যার সঠিক সারণী নিশ্চিত করুন।
❓ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)
1. পৃষ্ঠা নম্বর কেন 1 থেকে শুরু হয়, যখন পৃষ্ঠা সূচকগুলি সাধারণত 0 থেকে শুরু হয়?
বুকমার্ক পৃষ্ঠা নম্বরগুলি 1 থেকে শুরু হওয়া শারীরিক পৃষ্ঠা নম্বর, যখন পাইমুপিডিএফের মতো গ্রন্থাগারগুলিতে পৃষ্ঠা সূচকগুলি সাধারণত 0 থেকে শুরু হয়। রূপান্তরের সময় এই পার্থক্যটি গুরুত্বপূর্ণ, অন্যথায় পৃষ্ঠা নম্বরগুলি ভুলভাবে সারিবদ্ধ হতে পারে।
2. get_toc(): একটি খালি তালিকা ফেরত দেওয়া কি অগত্যা কোনও ফাইল সমস্যা নির্দেশ করে?
অগত্যা নয়। কিছু পিডিএফে দৃশ্যমানভাবে বিষয়বস্তুর একটি সারণী পৃষ্ঠা থাকে তবে কোনও এমবেডেড বুকমার্ক মেটাডেটা নেই, তাই একটি খালি তালিকা ফেরত দেওয়া স্বাভাবিক। এই ক্ষেত্রে, পরিবর্তে পাঠ্য বিন্যাস বিশ্লেষণ ব্যবহার করা উচিত।
3. যদি পৃষ্ঠা নম্বরটি সীমার বাইরে চলে যায়, তবে লাইব্রেরি কি অবিলম্বে কোনও ত্রুটি রিপোর্ট করবে?
না। এই নিবন্ধের পরীক্ষাগুলি দেখায় যে পৃষ্ঠা নম্বরগুলি সীমানার বাইরে চলে গেলে PyMuPDF সতর্কতা মুদ্রণ করে তবে ব্যতিক্রম নিক্ষেপ করে না, তাই বৈধতা ফাংশনটি সক্রিয়ভাবে ফিল্টার করতে হবে।
4. শ্রেণিবদ্ধ জাম্পগুলি (যেমন 1 থেকে 3 পর্যন্ত সোজা যাওয়া) কি মাঝের স্তরগুলি পূরণ করার প্রয়োজন হয়?
নিবন্ধের পরামর্শটি হ'ল মূল শ্রেণিবিন্যাসটি ধরে রাখা এবং মধ্যবর্তী স্তরগুলি পূরণ না করা, কারণ এই কাঠামোটি এখনও বৈধ।
📝 সারসংক্ষেপ
পিডিএফ ডিরেক্টরিগুলির শ্রেণিবিন্যাস এবং পৃষ্ঠা নম্বরগুলি ব্যবহারের আগে পরীক্ষা করা দরকার, তাই get_toc() এর মূল আউটপুটকে সরাসরি নির্ভরযোগ্য কাঠামো হিসাবে বিবেচনা করা যায় না। অস্পষ্টতা বা বুকমার্কের অভাবের মুখোমুখি হওয়ার সময়, ডাউনস্ট্রিম প্রক্রিয়া ত্রুটিগুলি এড়াতে অবিলম্বে ম্যানুয়াল শ্রমে স্যুইচ করুন বা অন্যান্য পদ্ধতিতে স্যুইচ করুন।
এখনই অভিজ্ঞতা: অনুবাদ শুরু করতে আপনার নথি আপলোড করুন, মূল ফর্ম্যাটিং সংরক্ষণ করুন
তথ্যসূত্র এবং পরবর্তী পদক্ষেপ
পরবর্তী পদক্ষেপটি হ'ল পরিচিত ডিরেক্টরি সমস্যাগুলি সমন্বিত একটি পরীক্ষা পিডিএফ প্রস্তুত করা, উপরের যাচাইকরণ স্ক্রিপ্টটি চালানো এবং বিভিন্ন অসঙ্গতির অনুপাত গণনা করা। যদি ঘন ঘন শ্রেণিবদ্ধ এড়িয়ে যাওয়া বা পৃষ্ঠা নম্বর অফসেট থাকে তবে অনুবাদের আগে বিষয়বস্তু পুনর্গঠনের পদক্ষেপের একটি সারণী যুক্ত করার বিষয়টি বিবেচনা করুন।
ডকুমেন্ট অনুবাদের জন্য এই চেকলিস্টটি ব্যবহার করুন
প্রথমে, পৃষ্ঠার ক্রম, উত্স অবস্থান এবং পাঠ্য অখণ্ডতা সাবধানে পরীক্ষা করুন, তারপরে অনুবাদ প্রক্রিয়ায় একই ডিসেনসিটাইজেশন নমুনা জমা দিন। অনুবাদের পরে, শিরোনাম, মূল পাঠ্য এবং শিরোনামগুলি সঠিকভাবে মিলে যায় কিনা তা পরীক্ষা করা প্রয়োজন; কেবল পাঠ্যের মসৃণতা দ্বারা বিচার করা যথেষ্ট নয়।
OmniDoc মাল্টি-ফর্ম্যাট ডকুমেন্ট অনুবাদ পোর্টাল সরবরাহ করে এবং অফিসিয়াল ওয়েবসাইটটি ওসিআর, শব্দকোষ এবং দ্বিভাষিক রেফারেন্স বৈশিষ্ট্যগুলি প্রবর্তন করে। ফাইলগুলি থেকে সরাসরি শুরু করতে চায় এমন দলগুলির জন্য, এটি প্রকৃত নমুনাগুলির সাথে মূল্যায়ন করার মতো একটি পথ। অনুগ্রহ করে আপনি যে বেনামী ফাইলটি আপলোড করার জন্য অনুমোদিত করেছেন তা ব্যবহার করুন এবং এই নিবন্ধের চেকলিস্টের সাথে ফলাফলগুলি যাচাই করুন। এটি দাবি করে না যে ওমনিডক এই নিবন্ধ থেকে ওপেন সোর্স লাইব্রেরি বা অভ্যন্তরীণ অ্যালগরিদম ব্যবহার করে, বা এটি উদাহরণ দিয়ে পণ্য পারফরম্যান্স পরীক্ষাকে প্রতিস্থাপন করে না।


