डबल-कॉलम पीडीएफ सीरीअली का काढली जाते? प्रथम निर्देशांक ठेवा आणि नंतर वाचन क्रमाबद्दल बोला
स्पष्ट करा की दुहेरी-स्तंभ पीडीएफ मजकूर अनुक्रमणिका फॉरमॅटच्या सिमेंटिक स्ट्रक्चरच्या कमतरतेमुळे उद्भवते, स्पष्ट करा की क्रमवारी पॅरामीटर केवळ एक भौमितिक क्रमवारी आहे. समन्वय विभाजनावर आधारित सिंथेटिक पायथॉन उदाहरण अनुक्रम पुनर्रचना तर्क प्रदर्शित करण्यासाठी, लागू सीमा स्पष्ट करण्यासाठी आणि मॅन्युअल पुनरावलोकन लाल रेषा स्पष्ट करण्यासाठी आणि OmniDoc भाषांतर कार्यप्रवाह जोडणारा व्यावहारिक स्वीकृती मार्ग प्रदान करण्यासाठी प्रदान केले आहे.
डबल-कॉलम PDF मधून काढलेला मजकूर क्रम अनेकदा चुकीच्या पद्धतीने ओळखला जात नाही, परंतु चुकीच्या क्रमाने वाचला जातो. हा लेख अशा वाचकांसाठी आहे ज्यांना कागदपत्रे आणि अहवाल यासारख्या दुहेरी-स्तंभ PDF मधून मजकूर काढायचा आहे आणि नंतर त्यांचे भाषांतर किंवा व्यवस्था करणे आवश्यक आहे.
वाचकांना सहसा या परिस्थितीचा सामना करावा लागतो: डाव्या स्तंभाच्या अर्ध्या मार्गाने, पुढील वाक्य उजव्या स्तंभातील सूत्र स्पष्टीकरणानंतर येते. वर्ण सर्व योग्यरित्या ओळखले जाऊ शकतात, परंतु क्रम विस्कळीत आहे. हा लेख प्रथम क्रमवारी का घडते याचे स्पष्टीकरण देतो आणि नंतर निर्देशांकांद्वारे विभाजन करून क्रमाची पुनर्रचना कशी करावी हे दाखवण्यासाठी सिंथेटिक उदाहरण वापरतो. शेवटी, ते तुमच्या स्वतःच्या फाइल्समध्ये वापरले जाऊ शकते की नाही हे ठरवण्यासाठी तुम्हाला लागू सीमा आणि स्वीकृती सूची देते.
डबल-कॉलम पीडीएफ सीरीअली का काढली जाते? एका वाक्याचा निष्कर्ष
प्रथम निर्देशांक आणि स्त्रोत पृष्ठ ठेवा आणि नंतर प्रादेशिक नियमांनुसार क्रमवारी लावा. संपूर्ण पृष्ठ थेट लांब स्ट्रिंगमध्ये संकुचित करू नका.
| तुमची परिस्थिती | शिफारस केलेल्या पद्धती | कारण |
|---|---|---|
| सामान्य दोन-स्तंभ कागद, मजकूर क्रमवारी | प्रथम विभागाचा डावा स्तंभ वाचा, नंतर उजवा स्तंभ वाचा | ओळ-दर-लाइन स्प्लिसिंग पर्यायी परिच्छेद नष्ट करेल |
| फक्त एक झटपट प्रयत्न करायचा होता | sort चालू आणि बंद करण्याच्या परिणामांची तुलना करा | sort फक्त भौमितिक क्रमवारी लावते, नियम पृष्ठांसाठी योग्य |
| पृष्ठांमध्ये क्रॉस-कॉलम शीर्षके, साइड नोट्स आणि तळटीप असतात | प्रदेशानुसार स्वतंत्रपणे प्रक्रिया करा आणि प्रादेशिक संबंध तपासा | केवळ भौमितिक वर्गीकरण या सामग्रीचे गुणधर्म निर्धारित करू शकत नाही. |
| भाषांतर मॉडेलकडे सुपूर्द करणे आवश्यक आहे | निर्देशांक आणि पृष्ठ क्रमांक ठेवा, प्रथम ऑर्डर व्यवस्थित करा आणि नंतर भाषांतर करा | संदर्भ चुकीच्या क्रमाने मॉडेल बदलून देखील उपाय करणे कठीण आहे. |
आदेशात घोळ का?
PDF मजकुराच्या प्रत्येक परिच्छेदाची स्थिती रेकॉर्ड करते, "हा कोणता परिच्छेद आहे आणि तो कोणत्या स्तंभाचा आहे?" जेव्हा एक्सट्रॅक्शन टूल कोऑर्डिनेट्सद्वारे आउटपुट करते, कोणतेही क्षेत्र नियम नसल्यास, डाव्या आणि उजव्या स्तंभांमधील मजकूर एकमेकांशी जोडला जाऊ शकतो.
ओळखीच्या टप्प्यात अशा समस्या उद्भवत नाहीत. कदाचित सर्व शब्द योग्यरित्या नमूद केले आहेत, परंतु चुकीच्या क्रमाने. म्हणून, निराकरणाची कल्पना वारंवार ओळखणे किंवा भाषांतर दुवे बदलण्याऐवजी वर्गीकरण आणि झोनिंगवर केंद्रित केली पाहिजे.
प्रथम निर्देशांक ठेवा, आणि नंतर वाचन क्रमाबद्दल बोला
ऑर्डरिंग समस्येचे निराकरण करण्यापूर्वी, मजकूराचे निर्देशांक आणि मूळ पृष्ठ जतन करा. संपूर्ण पृष्ठ एका लांब स्ट्रिंगमध्ये संकुचित करण्यासाठी घाई करू नका.
- क्षेत्राच्या मालकीचा पुढील निर्णय सुलभ करण्यासाठी प्रत्येक मजकूर ब्लॉकचे चार समन्वय ठेवा.
- बॅकट्रॅकिंग आणि मॅन्युअल सत्यापन सुलभ करण्यासाठी स्त्रोत पृष्ठ क्रमांक ठेवा.
- एकदा प्रादेशिक माहिती गमावली की, त्यानंतरच्या भाषांतरांना चुकीचा संदर्भ मिळेल आणि भाषांतर मॉडेल बदलल्याने त्यावर उपाय करणे शक्य होणार नाही.
क्रमवारी = सत्य प्रयत्न करण्यासारखे आहे, परंतु ते मांडणी समजून घेणारे नाही
PyMuPDF मजकूर, शब्द, ब्लॉक्स इ. सारखे विविध निष्कर्षण फॉर्म प्रदान करते. sort ची विशिष्ट प्रक्रिया आउटपुट प्रकार आणि आवृत्तीनुसार बदलते. हे सामान्यतः एक निश्चित टाइपसेटिंग अल्गोरिदम म्हणून वर्णन केले जाऊ शकत नाही किंवा सर्व दस्तऐवजांचे वाचन क्रम पुनर्संचयित करण्याचे वचन दिले जाऊ शकत नाही.
वापरासाठी सूचना खालीलप्रमाणे आहेत:
- नियम पृष्ठासाठी, आपण प्रथम क्रमवारी चालू आणि बंद करण्याच्या परिणामांची तुलना करू शकता.
- क्रॉस-कॉलम शीर्षके, साइड नोट्स आणि तळटीप असलेल्या पृष्ठांसाठी, क्षेत्र संबंध पुन्हा तपासणे आवश्यक आहे.
- PDF मध्ये स्ट्रक्चरल टॅग असू शकतात, परंतु याचा अर्थ असा नाही की सध्या वापरलेला एक्सट्रॅक्शन इंटरफेस आपोआप तुम्हाला आवश्यक असलेले सिमेंटिक पॅराग्राफ ट्री देईल.
हा लेख सार्वत्रिक लेआउट ओळख लागू करत नाही, परंतु केवळ "विद्यमान प्रादेशिक नियमांनुसार क्रमवारी कशी लावायची" आणि क्षमतांच्या सीमा स्पष्टपणे स्पष्ट करते. इंटरफेस आणि एक्सट्रॅक्शन फॉर्मसाठी, कृपया PyMuPDF अधिकृत मजकूर निष्कर्षण मार्गदर्शक चा संदर्भ घ्या.
समस्या स्पष्ट करण्यासाठी पाच संश्लेषित मजकूर ब्लॉक वापरा
स्तंभांमध्ये 300-बिंदू सीमा असलेले उदाहरण पृष्ठ 600 गुण रुंद आहे; शीर्षस्थानाच्या 80 बिंदूंच्या आत क्रॉस-कॉलम शीर्षक क्षेत्र आहे आणि त्याखाली मजकूर क्षेत्र आहे. इनपुट जाणूनबुजून स्क्रॅम्बल केले आहे: उजव्या स्तंभातील दुसरा परिच्छेद प्रथम येतो आणि डाव्या स्तंभातील पहिला परिच्छेद शेवटचा येतो. प्रत्येक ट्युपलमध्ये आयत आणि मजकूराचे चार निर्देशांक असतात. प्रात्यक्षिक हेतूंसाठी परिभाषित केलेली ही एक सरलीकृत रचना आहे आणि ती get_text("blocks") च्या पूर्ण परतावा मूल्याच्या समतुल्य नाही.
अपेक्षित परिणाम असा असावा: शीर्षक, डाव्या स्तंभातील पहिला परिच्छेद, डाव्या स्तंभातील दुसरा परिच्छेद, उजव्या स्तंभातील पहिला परिच्छेद, उजव्या स्तंभातील दुसरा परिच्छेद. स्तंभाच्या सीमा ओलांडणाऱ्या मजकुराचे ब्लॉक्स डाव्या स्तंभात शांतपणे टाकून किंवा जोडण्याऐवजी अपवाद सूचीमध्ये जाणे आवश्यक आहे.
संपूर्णपणे चालवता येईल असे एक छोटेसे उदाहरण
खालील उदाहरणे फक्त Python मानक लायब्ररी वापरतात. 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 या संमिश्र पृष्ठावरील सेटिंग्जमधून येतात आणि सर्व PDF ला लागू होणारे अनुभवजन्य थ्रेशोल्ड नाहीत. जेव्हा पुढील पृष्ठाच्या डाव्या आणि उजव्या स्तंभांची रुंदी बदलते, जर मागील पृष्ठाचे मापदंड वापरले गेले तर, "प्रोग्राम सामान्यपणे चालतो परंतु सामग्री चुकीची आहे" होऊ शकते. प्रादेशिक नियमांनी पृष्ठाचे अनुसरण केले पाहिजे, किमान नियम आवृत्ती आणि पृष्ठ आकार नोंदवा.
📊 मुख्य तुलना
| प्रक्रिया पद्धत | काय केले जाऊ शकते | काय लक्ष द्यावे |
|---|---|---|
sort=True थेट वापरा | निर्देशांकानुसार भौमितिक क्रमवारी लावा. तुम्ही प्रथम नियम पृष्ठावर ते वापरून पाहू शकता. | क्रॉस-कॉलम शीर्षके, साइड नोट्स आणि तळटीपांची मालकी समजत नाही |
| समन्वय विभाजनावर आधारित क्रमवारी लावा | प्रथम क्षेत्र विभाजित करा, आणि नंतर तपासणी सुलभ करण्यासाठी विभागानुसार वाचा. | विभाजन थ्रेशोल्ड पृष्ठावर अवलंबून असते आणि पृष्ठ आधारावर सत्यापित करणे आवश्यक आहे. |
| मॅन्युअली भाष्य वाचन क्रम | परिणाम मुख्य दस्तऐवजांच्या पडताळणीसाठी सर्वात नियंत्रित आणि योग्य आहे | उच्च किंमत, स्पॉट चेक आणि बेंचमार्कसाठी योग्य |
फक्त स्वीकृती दरम्यान काही त्रुटी आहेत की नाही हे तपासू नका
| आयटम तपासा | काय पहावे | जेव्हा ते जुळत नाही तेव्हा काय करावे |
|---|---|---|
| क्षेत्र क्रम | शीर्षकानंतर, प्रथम पूर्ण डावा स्तंभ, नंतर संपूर्ण उजवा स्तंभ | विभाजन नियम तपासा आणि स्ट्रिंग बदलून पॅच करू नका |
| सामग्रीचे संवर्धन | स्वीकृत ब्लॉक्सची संख्या आणि नाकारलेल्या ब्लॉक्सची संख्या इनपुट ब्लॉक्सच्या संख्येइतकी आहे | डिलिव्हरी ब्लॉक करा आणि सायलेंट ब्लॉक तोटा आहे का ते तपासा |
| क्रॉस-बार मजकूर | नाकारण्याच्या यादीत दिसतात | नवीन अडथळा विभाग जोडा किंवा मॅन्युअल निर्णयासाठी सबमिट करा |
| फिरवा आणि क्रॉप करा | इनपुट ब्लॉक विभाजनाप्रमाणेच समन्वय प्रणाली वापरतो | प्रथम समन्वय एकत्र करा, नंतर समावेशन निर्णय घ्या |
| शीर्षलेख, तळटीप | व्यवसाय नियमांनुसार स्वतंत्रपणे वर्गीकृत | सर्व तळ मजकूर हटवू नका |
वास्तविक पेपरमध्ये अशी रचना देखील असू शकते: मध्यभागी क्रॉस-कॉलम आकृती घाला आणि आकृतीच्या खाली दुहेरी स्तंभ पुन्हा सुरू करा. यावेळी, पृष्ठ प्रथम वरच्या आणि खालच्या विभागात विभागले जाणे आवश्यक आहे, आणि नंतर स्वतंत्रपणे क्रमवारी लावा. या लेखातील विभाजनांचे एकवेळचे तीन गट पुरेसे नाहीत. येथे वाचन दिशा चीनी अनुलंब मांडणी, उजवीकडून डावीकडे मजकूर आणि जटिल सीमांत लागू केली जाऊ नये.
🎯 तुमच्यासाठी कोणती पद्धत योग्य आहे?
जर तुम्ही...
- फक्त एकल-स्तंभ किंवा दुहेरी-स्तंभ पृष्ठे ज्यांना नियमांवर प्रक्रिया करणे आवश्यक आहे: प्रथम
sortचालू आणि बंद करण्याच्या परिणामांची तुलना करा आणि नंतर विभाजन नियमांची आवश्यकता आहे का ते ठरवा. - स्पॅन केलेल्या शीर्षके, आकृत्या किंवा तळटीपांसह पेपर हाताळा: विभागांनुसार पृष्ठे विभाजित करा आणि विस्तारित सामग्रीसाठी अपवाद सूची सेट करा.
- अनुवाद इतरांना वितरित करणे आवश्यक आहे: निर्देशांक आणि पृष्ठ क्रमांक ठेवा आणि स्वीकृती सूचीनुसार ते एक-एक करून तपासा. ऑपरेशन दरम्यान त्रुटी आहेत की नाही हे तपासू नका.
- स्वतः स्क्रिप्ट्स ठेवू इच्छित नाही: तुम्ही थेट तयार दस्तऐवज भाषांतर साधने वापरू शकता आणि अनुक्रमिक चेकलिस्टच्या समान संचासह भाषांतर तपासू शकता.
OmniDoc ची भाषांतर प्रक्रिया कशी प्राप्त करावी
स्व-निर्मित स्क्रिप्ट्सचे मूल्य स्वीकृती नियम स्पष्टपणे लिहिण्यात आहे; तयार भाषांतर साधनांचे मूल्य फाइल्स आणि भाषांतरांमधील ऑपरेशनल दुवे कमी करण्यात आहे. दोघांमध्ये कोणताही संघर्ष नाही. OmniDoc (उत्पादन पोर्टल) एक दस्तऐवज भाषांतर पोर्टल प्रदान करते आणि अधिकृत वेबसाइट OCR, शब्दकोष आणि द्विभाषिक तुलना यांसारखी कार्ये देखील सादर करते. तुम्हाला अपलोड करण्याची परवानगी असलेला डिसेंसिटाइज्ड पेपर निवडू शकता आणि त्याच क्रमिक चेकलिस्टचा वापर करून भाषांतर तपासू शकता.
खालील बाबी तपासण्यावर लक्ष केंद्रित करा:
- क्रॉस-कॉलम शीर्षकानंतरचे पहिले वाक्य योग्यरित्या जोडलेले आहे की नाही.
- मजकुरात आकृतीचे मथळे समाविष्ट केले आहेत का?
- तळटीप संदर्भ अद्याप योग्य ठिकाणी मॅप करतात की नाही.
हे OmniDoc च्या अंतर्गत अल्गोरिदमचा अंदाज न लावता, वितरणयोग्य गोष्टींचे मूल्यांकन करत आहे. जर परिणाम आवश्यकतांची पूर्तता करत नसेल, तर कृपया मूळ पृष्ठ आणि त्रुटी विभाग ठेवा, प्रथम समस्या ओळख, क्रमवारी किंवा भाषांतर प्रक्रियेत आहे की नाही ते शोधा आणि नंतर ते कसे दुरुस्त करायचे ते ठरवा.
❓ वारंवार विचारले जाणारे प्रश्न (FAQ)
१. डबल-कॉलम पीडीएफ सिरीयल, ती चुकीची ओळखली गेली आहे का?
अनिश्चित सर्व शब्द योग्यरित्या ओळखले जाऊ शकतात, परंतु समस्या बहुतेक वेळा वाचन क्रमामध्ये असते, म्हणून वर्गीकरण आणि प्रादेशिक नियम प्रथम तपासले पाहिजेत.
२. sort=True डबल कॉलम ऑर्डरची समस्या थेट सोडवू शकते?
त्याचे सामान्यीकरण करता येत नाही. sort चे हाताळणी आउटपुट प्रकार आणि आवृत्तीनुसार बदलते, ते लेआउट समजून घेणारे नाही आणि सर्व दस्तऐवजांचे वाचन क्रम पुनर्संचयित करण्याचे वचन देऊ शकत नाही. आपण प्रथम नियम पृष्ठ वापरून पाहू शकता आणि आपल्याला क्रॉस-कॉलम सामग्रीसह पृष्ठांसाठी प्रादेशिक संबंध देखील तपासण्याची आवश्यकता आहे.
३. संपूर्ण पान एका लांब स्ट्रिंगमध्ये का संकुचित केले जाऊ शकत नाही?
एकदा समन्वय आणि क्षेत्राची माहिती गमावली की, त्यानंतरच्या भाषांतरांना चुकीचा संदर्भ मिळेल आणि भाषांतर मॉडेल बदलणे कदाचित त्यावर उपाय करू शकणार नाही.
४. उदाहरणातील ८० गुण आणि ३०० गुण थेट इतर PDF वर वापरता येतील का?
करू शकत नाही. ते या संमिश्र पृष्ठासाठी फक्त सेटिंग्ज आहेत. जेव्हा पृष्ठाचा आकार किंवा स्तंभाची रुंदी बदलते, तेव्हा नियम आवृत्ती पृष्ठ-दर-पृष्ठ आधारावर सत्यापित आणि स्वतंत्रपणे रेकॉर्ड केली जावी.
📝 सारांश
डबल-कॉलम PDF मध्ये ऑर्डर समस्यांसाठी, निर्देशांक आणि स्त्रोत पृष्ठे आधी राखून ठेवली पाहिजेत, नंतर प्रादेशिक नियम वापरून प्रक्रिया केली पाहिजे आणि स्वीकृती चेकलिस्टनुसार आयटमनुसार आयटम तपासले पाहिजेत. नियम स्पष्टपणे लिहिण्यासाठी स्वयं-निर्मित स्क्रिप्ट योग्य आहेत आणि ऑपरेशन लिंक्स कमी करण्यासाठी तयार साधने योग्य आहेत. दोन्ही एकत्र वापरता येतात.
हे आता वापरून पहा: मूळ लेआउट कायम ठेवून भाषांतर सुरू करण्यासाठी दस्तऐवज अपलोड करा


