मी पीडीएफच्या सामग्रीच्या सारणीवर क्लिक करू शकलो परंतु निष्कर्ष काढल्यानंतर पातळी गमावल्यास मी काय करावे?
लिहिण्यापूर्वी बुकमार्क पदानुक्रम तपासणे आवश्यक आहे. पहिला आयटम एक स्तर आहे, आणि त्यानंतरच्या आयटममध्ये जास्तीत जास्त एका स्तराने वाढ केली जाऊ शकते; उदाहरण बेकायदेशीर स्तर आणि सीमाबाह्य पृष्ठ क्रमांक नाकारते, आणि निर्देशिका संरचना बनावट करण्यासाठी आपोआप स्तर बदलत नाही. बुकमार्क पृष्ठ क्रमांक एकपासून सुरू होतात आणि पृष्ठ अनुक्रमणिका सहसा शून्यापासून सुरू होतात.
पीडीएफच्या सामग्री पृष्ठाची सारणी सामान्यपणे वाचकामध्ये पुनर्निर्देशित केली जाऊ शकते, परंतु स्क्रिप्ट वापरून काढल्यानंतर, पदानुक्रम सपाट असू शकतो, पृष्ठ क्रमांक चुकीचे असू शकतात किंवा अनुक्रमणिका देखील असामान्य असू शकते. स्कॅन केलेल्या फाइल्स किंवा अनियमित बुकमार्क स्ट्रक्चर्ससह फाइल्स विलीन करताना या प्रकारची समस्या सामान्य आहे. जर एक्सट्रॅक्शन परिणाम थेट डाउनस्ट्रीम वापरकर्त्यांना दिले गेले, तर भाषांतर विभाजन आणि लिंकिंगमध्ये त्रुटी येऊ शकतात.
हा लेख विकासक आणि दस्तऐवजीकरण कार्यसंघांसाठी आहे ज्यांना पीडीएफ कॅटलॉगची प्रक्रिया करणे आवश्यक आहे. वाचल्यानंतर, तुम्ही get_toc() रिटर्न व्हॅल्यूचा अर्थ समजू शकता, स्तर आणि पृष्ठ क्रमांकांसाठी पडताळणी नियमांमध्ये प्रभुत्व मिळवू शकता आणि कोणत्या परिस्थितीत मॅन्युअल पडताळणीमध्ये रूपांतरित केले जावे हे जाणून घेऊ शकता. हा लेख प्रक्रिया पद्धतीचे प्रात्यक्षिक करण्यासाठी सिंथेटिक नमुना वापरतो आणि कोड एका वेगळ्या वातावरणात नमुन्याद्वारे तपासला गेला आहे, परंतु हे सर्व वास्तविक फाइल्स किंवा उत्पादन प्रभावांची हमी दर्शवत नाही. महत्त्वाच्या कागदपत्रांवर प्रक्रिया करण्यापूर्वी, कृपया मूळ कागदपत्रे ठेवा आणि मजकूरातील सीमा आणि स्वीकृती आयटमनुसार त्यांचे पुनरावलोकन करा.
पीडीएफ सामग्रीच्या पृष्ठावर क्लिक केले जाऊ शकते, परंतु उतारा केल्यानंतर पदानुक्रम गमावल्यास मी काय करावे? एका वाक्याचा निष्कर्ष
प्रथम सत्यापित करा, नंतर लिहा: बुकमार्क पातळी प्रथम तपासली जाणे आवश्यक आहे, प्रथम आयटम प्रथम स्तर म्हणून गणला जातो, त्यानंतरचे स्तर मागील आयटम प्लस वन पेक्षा जास्त नसावेत आणि सीमाबाह्य पृष्ठ क्रमांकासह प्रविष्ट्या लिहिल्या जाणार नाहीत.
| तुमची परिस्थिती | शिफारस केलेल्या पद्धती | कारण |
|---|---|---|
| निर्देशिका पृष्ठावर क्लिक केले जाऊ शकते, आणि पदानुक्रम सपाट आहे किंवा निष्कर्ष काढल्यानंतर चुकीचे संरेखित केले आहे. | मूळ यादी मिळविण्यासाठी प्रथम get_toc() वापरा, नंतर ती वापरण्यापूर्वी एक-एक करून सत्यापित करा. | get_toc() ने परत केलेल्या मूळ सूचीला कोणतेही संरचित प्रमाणीकरण नाही |
| पृष्ठ क्रमांक 0 आहे किंवा पृष्ठांच्या एकूण संख्येपेक्षा जास्त आहे | एंट्री आणि लॉग टाकून द्या | सीमेबाहेरच्या पृष्ठ क्रमांकांमुळे जंप अयशस्वी होईल |
get_toc() रिक्त यादी परत करते | त्याऐवजी मजकूर मांडणी विश्लेषण वापरा आणि आंधळेपणाने पुन्हा प्रयत्न करू नका | फाइलमध्ये कदाचित बुकमार्क मेटाडेटा एम्बेड केलेला नसेल |
| समान शीर्षक अनेक भिन्न पृष्ठ क्रमांकांशी संबंधित आहे | अस्पष्ट म्हणून चिन्हांकित करा, मॅन्युअल पडताळणीवर स्थानांतरित करा | कोणता पृष्ठ क्रमांक बरोबर आहे हे स्वयंचलितपणे निर्धारित करण्यात अक्षम |
निष्कर्षण परिणाम पातळी का गमावतात?
get_toc() [level, title, page] ट्रिपल्सची सूची आउटपुट करण्यासाठी डीफॉल्ट आहे. त्यापैकी, page हा 1 पासून सुरू होणारा भौतिक पृष्ठ क्रमांक आहे आणि level फक्त नेस्टिंग खोलीचे प्रतिनिधित्व करतो आणि सातत्य किंवा कायदेशीरपणाची हमी देत नाही.
जर स्त्रोत PDF स्कॅन मर्ज टूलद्वारे व्युत्पन्न केला असेल, तर सामान्य समस्यांमध्ये हे समाविष्ट आहे:
- लेव्हल जंप: उदाहरणार्थ, थेट १ ते ३ पर्यंत उडी मारा
- पृष्ठ क्रमांक अपवाद: पृष्ठ क्रमांक 0 आहे किंवा पृष्ठांच्या एकूण संख्येपेक्षा जास्त आहे
- शीर्षक अपवाद: शीर्षकामध्ये नियंत्रण वर्ण आहेत
डाउनस्ट्रीम कार्यांसाठी थेट वापरल्यास, ते भाषांतर विभागांमध्ये गोंधळ निर्माण करेल किंवा लिंक अयशस्वी होईल. अधिक कपटीपणे, काही PDF मध्ये सामग्री पृष्ठाची दृश्य सारणी असते परंतु एम्बेड केलेला बुकमार्क मेटाडेटा नाही. 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() परिणाम | शिफारस केलेले उपचार |
|---|---|---|
| बुकमार्क आहेत आणि रचना कायदेशीर आहे | तिप्पटांची सूची मिळवते | पडताळणीनंतर थेट वापरा |
| बुकमार्क आहेत परंतु पातळी किंवा पृष्ठ क्रमांक असामान्य आहे | अपवाद आयटम असलेली सूची मिळवते | लॉग फिल्टर आणि रेकॉर्ड करा, आवश्यक असल्यास मॅन्युअल ऑपरेशनमध्ये स्थानांतरित करा |
| दृश्यमानपणे सामग्री पृष्ठाची सारणी आहे परंतु बुकमार्क नाहीत | रिकामी यादी परत करा | त्याऐवजी मजकूर मांडणी विश्लेषण वापरा |
| EPUB आणि इतर रीफ्लो दस्तऐवज | पृष्ठ क्रमांक स्वरूप आहे (धडा, pno) | हे पृष्ठ क्रमांक पडताळणी तर्क लागू होत नाही आणि त्यासाठी विशेष प्रक्रिया आवश्यक आहे. |
स्वीकृती निकष आणि मॅन्युअल पुनरावलोकन सीमा
खालील सारणी केवळ PDF कॅटलॉग मेटाडेटा काढण्यावर लक्ष केंद्रित करते:
| घटनांचे निरीक्षण करा | प्रक्रिया निर्णय | ऑटोमेशन लागू आहे की नाही |
|---|---|---|
| पृष्ठ क्रमांक 0 किंवा एकूण पृष्ठांच्या संख्येपेक्षा जास्त आहे | एंट्री टाकून द्या आणि लॉग इन करा | होय |
| पातळी 1 पेक्षा कमी किंवा पूर्णांक नसलेली आहे | वरील नियमांनुसार प्रक्रिया करा (मागील सूचना पहा) | होय |
| शीर्षक पूर्णपणे रिक्त किंवा शुद्ध चिन्हे आहे | [untitled] सह बदला | होय |
| पातळी उडी (उदा. 1 ते 3) | मूळ स्तर ठेवा आणि मध्यवर्ती स्तर जोडू नका | होय (रचना कायदेशीर आहे) |
| समान शीर्षक अनेक भिन्न पृष्ठ क्रमांकांशी संबंधित आहे | अस्पष्ट म्हणून चिन्हांकित करा, मॅन्युअलवर स्थानांतरित करा | नाही |
| नोंदींची संख्या 200 पेक्षा जास्त आहे आणि कोणताही स्तर बदल नाही | OCR चुकीच्या ओळखीचा संशय असल्यास, मॅन्युअल सत्यापन आवश्यक आहे. | नाही |
| बाह्य URI किंवा JavaScript क्रिया समाविष्टीत आहे | नॉन-पेज जंप आयटम फिल्टर करा | होय (सुरक्षा धोरण) |
| पुनर्रचना केलेले दस्तऐवज जसे की EPUB, पृष्ठ क्रमांक आहेत (धडा, pno) | हे पृष्ठ क्रमांक पडताळणी तर्क लागू होत नाही | नाही (विशेष प्रक्रिया आवश्यक आहे) |
हे लक्षात घ्यावे की कोडचे प्रात्यक्षिक केवळ संरचनेची कायदेशीरता सत्यापित करते आणि जंप अचूक आहे की नाही हे सत्यापित करण्यासाठी एंड-टू-एंड प्रभाव प्रस्तुतीकरणासह एकत्र करणे आवश्यक आहे.
🎯 तुमच्यासाठी कोणती पद्धत योग्य आहे?
जर तुम्हाला बॅचेसमध्ये डिरेक्टरी काढायची असेल
प्रथम get_toc() निकालावर संरचनात्मक पडताळणी करा, त्यानंतर पुढील प्रक्रियेत लिहा आणि लॉग पुनरावलोकनासाठी ठेवा.
जर तुमच्या पीडीएफमध्ये दृष्यदृष्ट्या सामग्रीची सारणी असेल परंतु उतारा रिकामा असेल
get_toc() चा वारंवार प्रयत्न करू नका, त्याऐवजी मजकूर मांडणी विश्लेषण प्रक्रिया वापरा.
जर तुमची डिरेक्टरी एंट्री एकाच नावाने वेगवेगळ्या पृष्ठांवर दिसत असेल
या नोंदी व्यक्तिचलित पडताळणीमध्ये रूपांतरित करा आणि आपोआप पृष्ठ क्रमांकांपैकी एक निवडू नका.
तुम्ही तुमचे दस्तऐवज भाषांतर प्रक्रियेसाठी सबमिट करत असल्यास
सेगमेंटेशन गोंधळ टाळण्यासाठी अनुवाद करण्यापूर्वी प्रथम निर्देशिकेची रचना आणि पृष्ठ क्रमांक बरोबर असल्याची खात्री करा.
❓ वारंवार विचारले जाणारे प्रश्न (FAQ)
1. पृष्ठ क्रमांक 1 पासून का सुरू होतो, तर पृष्ठ अनुक्रमणिका सामान्यतः 0 पासून सुरू होते?
बुकमार्क पृष्ठ क्रमांक हे 1 पासून सुरू होणारे भौतिक पृष्ठ क्रमांक आहेत, तर PyMuPDF सारख्या लायब्ररींमधील पृष्ठ अनुक्रमणिका सहसा 0 पासून सुरू होतात. रूपांतरित करताना तुम्हाला या फरकाकडे लक्ष देणे आवश्यक आहे, अन्यथा पृष्ठ क्रमांक चुकीचे संरेखित केले जातील.
२. जर get_toc() ने रिकामी यादी दिली, तर याचा अर्थ फाइलमध्ये काहीतरी चूक आहे का?
अनिश्चित काही पीडीएफमध्ये दृष्यदृष्ट्या सामग्रीचे सारणी असते, परंतु बुकमार्क मेटाडेटा एम्बेड करत नाहीत. रिक्त यादी परत करणे सामान्य आहे. या प्रकरणात, त्याऐवजी मजकूर मांडणी विश्लेषण वापरले पाहिजे.
३. जेव्हा पृष्ठ क्रमांक सीमारेषा ओलांडतो, तेव्हा लायब्ररी थेट त्रुटी नोंदवेल का?
करणार नाही. या लेखातील वास्तविक मापनात असे आढळले आहे की PyMuPDF चेतावणी मुद्रित करेल परंतु जेव्हा पृष्ठ क्रमांक सीमारेषा ओलांडतो तेव्हा अपवाद सोडणार नाही, म्हणून सत्यापन कार्य सक्रियपणे फिल्टर करणे आवश्यक आहे.
4. लेव्हल जंपसाठी (जसे की थेट 1 ते 3 पर्यंत जाणे) तुम्हाला मधले स्तर भरावे लागतील का?
लेखातील सूचना मूळ पदानुक्रम कायम ठेवण्याची आणि मध्यवर्ती स्तर जोडू नये, कारण ही रचना अद्याप कायदेशीर आहे.
📝 सारांश
पीडीएफ निर्देशिकेचे पदानुक्रम आणि पृष्ठ क्रमांक वापरण्यापूर्वी सत्यापित करणे आवश्यक आहे. get_toc() चे मूळ आउटपुट थेट विश्वसनीय संरचना म्हणून मानले जाऊ शकत नाही. अस्पष्टता किंवा कोणतेही बुकमार्क नसताना, मॅन्युअल कार्यावर स्विच करणे किंवा वेळेवर इतर पद्धती वापरणे डाउनस्ट्रीम प्रक्रियेतील त्रुटी टाळू शकते.
हे आता वापरून पहा: मूळ लेआउट कायम ठेवून भाषांतर सुरू करण्यासाठी दस्तऐवज अपलोड करा
संदर्भ आणि पुढील पायऱ्या
सुचवलेली पुढील पायरी: ज्ञात निर्देशिका समस्या असलेली चाचणी PDF तयार करा, वरील सत्यापन स्क्रिप्ट चालवा आणि विविध विसंगतींचे प्रमाण मोजा. लेव्हल जंप किंवा पृष्ठ क्रमांक शिफ्ट वारंवार होत असल्यास, भाषांतर करण्यापूर्वी निर्देशिका पुनर्रचना चरण जोडण्याचा विचार करा.
दस्तऐवज भाषांतरासाठी ही चेकलिस्ट वापरा
प्रथम पृष्ठ क्रम, स्त्रोत स्थान आणि मजकूर अखंडता तपासा आणि नंतर अनुवाद प्रक्रियेत समान संवेदनक्षम नमुना सबमिट करा. भाषांतरानंतर, तुम्हाला अद्याप शीर्षक, मजकूर आणि चित्रे बरोबर आहेत की नाही हे तपासण्याची आवश्यकता आहे. तुम्ही फक्त मजकूर गुळगुळीत आहे की नाही हे तपासू शकत नाही.
OmniDoc एक मल्टी-फॉर्मेट दस्तऐवज भाषांतर पोर्टल प्रदान करते आणि अधिकृत वेबसाइट OCR, शब्दकोष आणि द्विभाषिक तुलना कार्ये सादर करते. फायलींमधून थेट काम सुरू करू पाहत असलेल्या संघांसाठी, वास्तविक जीवनातील नमुन्यांसह मूल्यमापन करण्याचा हा मार्ग आहे. कृपया तुमच्याकडे अपलोड करण्याची परवानगी असलेल्या डिसेन्सिटाइज्ड फाइल्स वापरा आणि परिणामांचे पुनरावलोकन करण्यासाठी या लेखातील चेक आयटम वापरा. OmniDoc या लेखातील ओपन सोर्स लायब्ररी किंवा अंतर्गत अल्गोरिदम वापरत असल्याचा कोणताही दावा नाही किंवा उदाहरण उत्पादन कार्यप्रदर्शन चाचणीची जागा घेत नाही.


