पीडीएफ से टेक्स्ट कैसे निकालें? [बन्द है]


152

क्या कोई पीडीएफ से पाठ और चित्र निकालने के लिए लाइब्रेरी / एपीआई की सिफारिश कर सकता है? हमें उस पाठ को प्राप्त करने में सक्षम होना चाहिए जो दस्तावेज़ के पूर्व-ज्ञात क्षेत्रों में निहित है, इसलिए एपीआई को हमें पृष्ठ पर प्रत्येक तत्व की स्थिति की जानकारी देने की आवश्यकता होगी।

हम चाहेंगे कि डेटा आउटपुट xmlया jsonफॉर्मेट में हो। हम वर्तमान में PdfTextStream को देख रहे हैं जो बहुत अच्छा लगता है, लेकिन अन्य लोगों के अनुभव और सुझाव सुनना पसंद करेंगे।

क्या वैकल्पिक रूप से एक पीडीएफ से पाठ निकालने के लिए विकल्प (वाणिज्यिक वाले या मुफ्त) हैं?



1
वास्तव में सरल (कोई स्थिति की जानकारी) की आवश्यकता वाले लोगों के लिए, यह पर्ल रेगीक्स पर्याप्त हो सकता है /^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg:। यह सिर्फ टीजे / टीजे ऑपरेटर के लिए दिखता है, जो एक पीडीएफ में सभी सामान्य पाठ को दर्शाता है।
एलेक्स आर।

1
TomRoush PdfBox लाइब्रेरी का उपयोग करें यह एंड्रॉइड पर अच्छा काम करता है
FaisalAhmed

जवाबों:


113

मुझे डेटा तालिका के साथ एक 400 पेज की पीडीएफ फाइल दी गई थी जिसे मुझे आयात करना था - सौभाग्य से कोई चित्र नहीं। घोस्टस्क्रिप्ट ने मेरे लिए काम किया:

gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

आउटपुट फ़ाइल को हेडर, आदि के साथ पृष्ठों में विभाजित किया गया था, लेकिन फिर खाली लाइनों आदि को हटाने और सभी 30,000 रिकॉर्डों को चूसने के लिए एक ऐप लिखना आसान था। -dSIMPLEऔर -dCOMPLEXइस मामले में कोई फर्क नहीं पड़ा।


37
gsइसके बजाय linux और cygwin पर कमांड है gswin64c। अच्छी तरह से काम। कोई पेटेंट भुगतान नहीं किया। यह सिर्फ काम करता है।
जनेऊ

4
हाँ, महान काम करता है! अब मैं अपनी पीडीएफ़ फ़ाइलों पर "grep" का उपयोग कर सकता हूँ। चूंकि मैं जितना पढ़ सकता हूं उससे बेहतर जीआरई कर सकता हूं, यह एक जीत है! (:-) अपवोट
डेविड एलसन

1
एकमात्र समस्या जो मुझे इसके साथ थी, वह इसे 'पुराने' फोंट के साथ pdfs पर उपयोग कर रही थी। पूरी तरह से स्थानीय रूप से उत्पन्न pdfs के लिए काम करता है, लेकिन अस्पष्ट स्रोतों के साथ कठिन है। अन्यथा, एक उत्कृष्ट स्क्रिप्टलेट।
जॉन एम

क्या करता -sDEVICE=txtwriteहै? मैं भूत का उपयोग कैसे करें
13

एक पाठ फ़ाइल के रूप में सहेजने के बजाय stdout आउटपुट के लिए, का उपयोग करें gswin64c -sDEVICE=txtwrite -o- input.pdf। स्रोत (मेरे द्वारा थोड़ा बदला हुआ): gist.github.com/drmohundro/560d72ed06baaf16f191ee8be34526ac
LuH

33

आज जब से मैं यह पता: पीडीएफ़ से पाठ निकासी के लिए सबसे अच्छी बात है TET, पाठ निष्कर्षण टूलकिट । TET उत्पादों के PDFlib.com परिवार का हिस्सा है।

PDFlib.com थॉमस मर्ज़ की कंपनी है। यदि आप उसका नाम नहीं पहचानते हैं: थॉमस मेरज़ "पोस्टस्क्रिप्ट और पीडीएफ बाइबल" के लेखक हैं।

टीईटी का पहला अवतार एक पुस्तकालय है । यह संभवत: वह सब कुछ कर सकता है, जो बुद्ध 006 चाहते थे, जिसमें पृष्ठ पर प्रत्येक तत्व के बारे में जानकारी शामिल थी। ओह, और यह छवियों को भी निकाल सकता है। यह उन छवियों को पुन: संयोजित करता है जो टुकड़ों में खंडित होती हैं।

pdflib.com इस तकनीक का एक और अवतार प्रदान करता है, एक्रोबेट के लिए टीईटी प्लगइन । और तीसरा अवतार PDFlib TET iFilter है । यह उपयोगकर्ता डेस्कटॉप के लिए एक स्टैंडअलोन उपकरण है। निजी, गैर-वाणिज्यिक प्रयोजनों के लिए उपयोग करने के लिए ये दोनों मुफ्त (बीयर में) हैं।

और यह वास्तव में शक्तिशाली है। एडोब के अपने पाठ निष्कर्षण से बेहतर तरीका है। इसने मेरे लिए पाठ निकाला जहाँ अन्य उपकरण (Adobe के सहित) केवल कचरा बाहर थूकते हैं।

मैंने अभी-अभी डेस्कटॉप स्टैंडअलोन टूल का परीक्षण किया है, और उनके वेबपेज पर वे जो कहते हैं वह सच है। इसकी बहुत अच्छी कमांडलाइन है। मेरे कुछ "समस्याग्रस्त" पीडीएफ परीक्षण उपकरण मेरी पूर्ण संतुष्टि को नियंत्रित करते हैं।

यह बात अब से हर परिष्कृत और चुनौतीपूर्ण पीडीएफ पाठ निष्कर्षण आवश्यकताओं के लिए मेरी सिफारिश होगी।

टीईटी बस कमाल है। यह तालिकाओं का पता लगाता है। तालिकाओं के अंदर, यह कई स्तंभों में फैली कोशिकाओं की पहचान करता है। यह तालिका तालिका और प्रत्येक तालिका सेल की सामग्री को अलग से पहचानता है। यह हाइफ़न के साथ बहुत अच्छा व्यवहार करता है: यह हाइफ़न को हटाता है और पूर्ण शब्दों को पुनर्स्थापित करता है। यह गैर-ASCII भाषाओं (CJK, अरबी और हिब्रू सहित) का समर्थन करता है। जब लिगुरिंग का सामना करना पड़ता है, तो यह मूल पात्रों को पुनर्स्थापित करता है ...

कोशिश करो।


32
कोई परीक्षण संस्करण नहीं है, और 440 डॉलर "यह एक कोशिश दे" के लिए थोड़ा अधिक है।
रोक स्ट्रनिसा


क्या यह सेवा एक एपीआई के माध्यम से उपलब्ध है?
बार्ट

1
मैं यह परीक्षण किया है, यह कॉलम पहचान नहीं है। मैंने एक अंग्रेजी टैब्लॉयड फ्रंट पेज स्कैन किया। पाठ को कागज पर 3 स्तंभों में विभाजित किया गया था, लेकिन इस प्लगइन ने वाक्यों को मिला दिया, जिससे यह अस्पष्ट हो गया। भूत-प्रेत जो मुफ़्त है उसी का सटीक आउटपुट था।
NoWhereToBeSeen

1
@RedHotScalability: इसके अलावा BTW, TET सही मापदंडों के साथ उपयोग किए जाने पर कोलम को पहचानता है। लेकिन मैं इसे पढ़ने के लिए महत्वाकांक्षी जेएस
चालबाज के लिए एक अभ्यास के रूप में छोड़ता हूं

29

एक कुशल कमांड लाइन उपकरण, खुला स्रोत, किसी भी शुल्क से मुक्त, दोनों लिनक्स और खिड़कियों पर उपलब्ध: बस नाम pdftotext। यह उपकरण xpdf लाइब्रेरी का एक हिस्सा है।

http://en.wikipedia.org/wiki/Pdftotext


4
एक सिडनोट पर: -layoutतालिकाओं को संरक्षित करने के लिए स्विच का उपयोग करें , बहुत अच्छी तरह से काम करता है।
सेबस्टियन


12

यहाँ मेरा सुझाव है यदि आप पीडीएफ से पाठ निकालना चाहते हैं, तो आप पीडीएफ फाइल को Google डॉक्स में आयात कर सकते हैं, फिर इसे और अधिक दोस्ताना प्रारूप जैसे .html, .odf, .rtf, .txt, आदि में निर्यात करें। यह सब ड्राइव एपीआई का उपयोग करके किया जाता है। । यह स्वतंत्र * और मजबूत है। पर एक नज़र डालें:

https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get

क्योंकि यह एक आराम एपीआई है, यह सभी प्रोग्रामिंग भाषाओं के साथ संगत है। मेरे द्वारा पोस्ट किए गए लिंक में जावा, .NET, पायथन, पीएचपी, रूबी, और अन्य सहित कई भाषाओं के लिए काम करने के उदाहरण हैं।

मुझे उम्मीद है यह मदद करेगा।


2
मैंने उस विकल्प का उपयोग किया है और मैं इसकी सिफारिश नहीं करूंगा। Google का PDF टेक्स्ट निष्कर्षण कई विकल्पों (esp- गैर-अंग्रेज़ी) के लिए उतना अच्छा नहीं है और यह बहुत ही स्लो भी है।
ब्योर्न लिंडक्विस्ट

10

PdfTextStream (जो आपने कहा था कि आप देख रहे हैं) अब सिंगल थ्रेडेड एप्लिकेशन के लिए मुफ्त है । मेरी राय में इसकी गुणवत्ता अन्य पुस्तकालयों (फंकी एम्बेडेड फोंट, आदि जैसी चीजों के लिए) की तुलना में बहुत बेहतर है।

वैकल्पिक रूप से, आपको अपाचे पीडीएफबॉक्स , ओपन सोर्स पर एक नज़र रखना चाहिए ।


PdfTextStream Android में समर्थित नहीं है। क्या Android के लिए इस तरह की कुछ अच्छी लाइब्रेरी उपलब्ध हैं?
फैसलअहमद

@FaisalAhmed PDFBox के बारे में क्या?
रेनॉड

हाँ PdfBox Android में भी समर्थित नहीं है .... PdfTextStream और PdfBox दोनों कुछ awt भाग का उपयोग करते हैं जो Android में समर्थित नहीं है
FaisalAhmed

मैं इस पुस्तकालय का उपयोग कर रहा हूँ जो android github.com/TomRoush/PdfBox-Android
FaisalAhmed

6

Docotic.Pdf पुस्तकालय का उपयोग पीडीएफ फाइलों से सादे पाठ के रूप में या चंक के लिए निर्देशांक के साथ पाठ विखंडू के संग्रह के रूप में किया जा सकता है ।

Docotic.Pdf का उपयोग पीडीएफ से छवियों को निकालने के लिए भी किया जा सकता है।

डिस्क्लेमर: मैं बिट चमत्कार के लिए काम करता हूं।


6

यहाँ टिप्पणियों में से एक ने विंडोज पर जी.एस. निम्नलिखित सिंटैक्स के साथ मुझे लिनक्स / OSX पर भी कुछ सफलता मिली:

gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

मैंने dSIMPLEइसके बजाय इसका उपयोग किया dCOMPLEXक्योंकि बाद वाला प्रति पंक्ति 1 वर्ण आउटपुट करता है।


5

जैसा कि प्रश्न विशेष रूप से पीडीएफ के डेटा को एक्सएमएल के रूप में एक्सएमएल के रूप में प्राप्त करने के बारे में है, इसलिए आप वाणिज्यिक उपकरण "बाइटस्काउट पीडीएफ एक्सट्रक्टर एसडीके" पर एक नज़र डालने के लिए इच्छुक हो सकते हैं जो बिल्कुल ऐसा करने में सक्षम है: पीडीएफ के साथ एक्सएमएल के रूप में पाठ को निकालने के साथ-साथ। स्थिति डेटा (x, y) और फ़ॉन्ट जानकारी:

स्रोत पीडीएफ में पाठ:

Products | Units | Price 

आउटपुट XML:

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>

पुनश्च: इसके अलावा यह पाठ को तालिका आधारित संरचना में भी तोड़ता है।

प्रकटीकरण: मैं बाइटस्काउट के लिए काम करता हूं


3

सबसे अच्छी बात जो मैं वर्तमान में सोच सकता हूं ("सरल" टूल की सूची में) घोस्टस्क्रिप्ट (वर्तमान संस्करण v.8.71 है) और पोस्टस्क्रिप्ट उपयोगिता कार्यक्रम ps2ascii.ps। घोस्टस्क्रिप्ट इसे अपनी libउपनिर्देशिका में शिप करता है । इसे आज़माएँ (विंडोज़ पर):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

यह आदेश 3-7 के पृष्ठों को संसाधित करता है input.pdfps2ascii.ps"अजीब" संख्याओं और अतिरिक्त infos माध्य ( वे तार, स्थिति, चौड़ाई, रंग, चित्र, आयत, फ़ॉन्ट और पृष्ठ विराम ... ) को देखने के लिए फ़ाइल में टिप्पणियों को पढ़ें । "सरल" टेक्स्ट आउटपुट प्राप्त करने के लिए, इसके -dCOMPLEXद्वारा भाग को बदलें -dSIMPLE


2
जैसा कि आप अनुमान लगाते हैं, यह केवल ASCII परीक्षण का आउटपुट देता है। मुफ्त में, सॉफ्टवेयर के लिए एक बढ़िया विकल्प नहीं है जो आप अंग्रेजी के अलावा अन्य भाषाओं के साथ बनाते हैं।
userx

3
@userx: जैसा कि आप अनुमान लगा सकते हैं, यह फ्री सॉफ्टवेयर है: इसलिए स्रोत कोड उपलब्ध है। गैर-एएससीआईआई के समर्थन के लिए विस्तार करना संभव ...
कर्ट फ़िफ़ेल

@userx: आज मैंने 'TET', pdflib.com से टेक्स्ट एक्सट्रैक्शन टूलकिट की खोज की। मेरा दूसरा जवाब देखिए।
कर्ट फ़िफ़ले

Ps2ascii घोस्टस्क्रिप्ट 9.07 से मेरे ओपनबीएसडी सिस्टम पर खूबसूरती से काम किया। मैंने सिर्फ 526 पन्नों की पीडीएफ को सादे पाठ में बदल दिया। अब मैं आसानी से नोट्स के लिए ग्रिप और एक्सट्रैक्ट निकाल सकता हूं। मैंने साधारण कमांड का उपयोग किया ps2ascii book.pdf notes.txt। यदि आपका दस्तावेज़ मुख्य रूप से ASCII है, तो आप भाग्य में हैं।
क्लिंट पाचल

3

मुझे पता है कि यह विषय काफी पुराना है, लेकिन यह जरूरत अभी भी जीवित है। मैंने कई दस्तावेज़, फ़ोरम और स्क्रिप्ट पढ़ीं और एक नया उन्नत बनाया जो संपीड़ित और असम्पीडित पीडीएफ का समर्थन करता है:

https://gist.github.com/smalot/6183152

कुछ मामलों में, सुरक्षा कारणों से कमांड लाइन की मनाही है। तो एक मूल PHP वर्ग कई जरूरतों को फिट कर सकता है।

आशा है कि यह कभी भी मदद करता है



2

Apache pdfbox में यह सुविधा है - पाठ भाग में वर्णित है:

http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html

एक उदाहरण कार्यान्वयन के लिए https://github.com/WolfgangFahl/pdfindexer देखें

टेस्टकेस TestPdfIndexer.testExtracting दिखाता है कि यह कैसे काम करता है



0

मेरे Macintosh सिस्टम पर, मुझे लगता है कि "Adobe Reader" काफी अच्छा काम करता है। मैंने अपने डेस्कटॉप पर एक उपनाम बनाया है जो "Adobe Reader.app" की ओर इशारा करता है, और मैं जो कुछ करता हूं वह एक पीडीएफ फाइल को उपनाम पर छोड़ देता है, जो इसे Adobe Reader में सक्रिय दस्तावेज़ बनाता है, और फिर फ़ाइल-मेनू से। मैं "टेक्स्ट के रूप में सहेजें ..." का चयन करता हूं, इसे एक नाम देता हूं और जहां इसे सहेजना है, "सहेजें" पर क्लिक करें, और मैं कर रहा हूं।


5
ओ पी एक प्रोग्राम से पीडीएफ को टेक्स्ट निकालने के लिए एक समाधान के लिए देखा । आपका जवाब इसके बजाय एक मैनुअल दिनचर्या का प्रस्ताव करता है।
mkl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.