2010-01-04 17 views
27

इसलिए राज्य में मुझे पीडीएफ फॉर्म में डेटा का एक गुच्छा जारी किया गया है, लेकिन मामलों को और भी खराब बनाने के लिए, पीडीएफ के अधिकांश (सभी?) कार्यालय, मुद्रित/फैक्स में टाइप किए गए अक्षरों में दिखाई देते हैं, और फिर स्कैन किया गया (हमारी सरकार अपने सबसे अच्छे एह पर?)। सबसे पहले मैंने सोचा कि मैं पागल था, लेकिन फिर मैंने कई पीडीएफ देखना शुरू कर दिया जो 'झुका हुआ' हैं, जैसे किसी ने उन्हें स्कैनर पर ठीक से नहीं मिला। इसलिए, मैंने उनसे वास्तविक पाठ प्राप्त करने के लिए अगली सबसे अच्छी चीज का अनुमान लगाया, प्रत्येक पृष्ठ को एक छवि में बदलना होगा।पीडीएफ को स्वचालित रूप से छवियों में कनवर्ट करना

स्पष्ट रूप से इसे स्वचालित होने की आवश्यकता है, और यदि संभव हो तो मैं पायथन के साथ रहना पसंद करूंगा। यदि रूबी या पर्ल के कार्यान्वयन के कुछ रूप हैं जो पास होने के लिए बहुत ही बढ़िया है, तो मैं उस मार्ग पर जा सकता हूं। मैंने टेक्स्ट निष्कर्षण के लिए पीईपीडीएफ की कोशिश की है, जो स्पष्ट रूप से मुझे बहुत अच्छा नहीं करता है। मैंने swftools की कोशिश की है, लेकिन मैं जो छवियां प्राप्त कर रहा हूं वह पूरी तरह से अनुपयोगी है। ऐसा लगता है कि फ़ॉन्ट्स रूपांतरण में बर्बाद हो जाते हैं। मैं वास्तव में रास्ते में छवि प्रारूप के बारे में भी परवाह नहीं करता, बस जब तक वे अपेक्षाकृत हल्के और पठनीय होते हैं।

+4

ऐसा करने से पहले, फ़ाइलों को उत्पन्न करने वाली .gov इकाई से संपर्क करें। आप उस वास्तविक डिजिटल फ़ाइलों तक आसानी से पहुंच प्राप्त करने में सक्षम हो सकते हैं। .gov में काम करने और उसी समस्या में भाग लेने के बाद, यह आमतौर पर पुरातन कानूनी आवश्यकताओं (पेपर हस्ताक्षर) और/या तकनीकी समझ की कमी के कारण होता है (अक्सर, यह सामान आईटी/वेब टीम को बाईपास करेगा जहां वे इसे पकड़ सकेंगे)।आप उन्हें पहुंच के मुद्दे पर भी कॉल कर सकते हैं क्योंकि एक पृष्ठ का विशाल जेपीजी सहायक प्रौद्योगिकी के लिए पूरी तरह से पहुंच योग्य नहीं है। –

+0

इसके अलावा, .gov भूमि के लिए उचित होने के लिए, उन्हें अक्सर एक अविश्वसनीय व्यापक तकनीकी चक्कर को पूरा करना होता है। हां, हम अभी भी ऐसे समय में रहते हैं जहां सबसे कम आम संप्रदाय एक पेपर फॉर्म है। –

+0

बंद करने के लिए वोट दिया गया: http://stackoverflow.com/questions/331918/converting-a-pdf-to-a-series-of-images-with-python देखें। – Brian

उत्तर

13

यदि पीडीएफ वास्तव में स्कैन की गई छवियां हैं, तो आपको पीडीएफ को एक छवि में परिवर्तित नहीं करना चाहिए, आपको पीडीएफ से छवि निकालना चाहिए। सबसे अधिक संभावना है कि पीडीएफ में सभी डेटा अनिवार्य रूप से एक विशाल छवि है, जिसे पीडीएफ वर्बोजिटी में लपेटा जाता है ताकि इसे एक्रोबैट में पठनीय बनाया जा सके।

आपको पीडीएफ में छवि को ढूंढने और बाइट्स को कॉपी करने के सरल विकल्प का प्रयास करना चाहिए: Extracting JPGs from PDFs। कोड मृत सरल है, और शायद कई कारण हैं कि यह आपकी पीडीएफ फाइलों पर काम नहीं करेगा। लेकिन अगर ऐसा होता है, तो आपके पास पीडीएफ फाइलों से छवि डेटा प्राप्त करने के लिए एक त्वरित और दर्द रहित तरीका होगा।

+0

क्या यह केवल जेपीजी के लिए काम करता है? क्योंकि जब मैंने इसे अपने स्वयं के पीडीएफ पर करने की कोशिश की तो यह शुरू करने में विफल होने के तुरंत बाद बंद हो जाएगा। –

5

घोस्टस्क्रिप्ट पीडीएफ फाइलों को छवियों में परिवर्तित करने के लिए आदर्श है। यह विश्वसनीय है और इसमें कई विन्यास योग्य विकल्प हैं। यह जीपीएल लाइसेंस या वाणिज्यिक लाइसेंस के तहत भी उपलब्ध है। आप इसे कमांड लाइन से कॉल कर सकते हैं या अपने मूल एपीआई का उपयोग कर सकते हैं।

7

आप कह सकते हैं उदहारण के लिए: अधिक जानकारी के लिए कमांड लाइन से pdftoppm (या पायथन के subprocess मॉड्यूल का उपयोग करके) और उसके बाद परिणामी पीपीएम फ़ाइलों को वांछित प्रारूप में परिवर्तित करें। ImageMagick (फिर से, subprocess या कुछ बाइंडिंग का उपयोग कर यदि वे मौजूद हैं)।

+1

मुझे बाहरी पुस्तकालयों का उपयोग किये बिना समाधान ढूंढना अच्छा लगेगा, क्योंकि मुझे यह रूपांतरण किसी साझा सर्वर पर बनाना है जो ImageMagick इंस्टॉल नहीं कर सकता है या घोस्टस्क्रिप्ट, कोई विचार कैसे? – DaniPaniz

1

यहां एक .pdf फ़ाइल को छवियों में बदलने के लिए एक वैकल्पिक दृष्टिकोण है: एक छवि प्रिंटर का उपयोग करें। मैंने ImagePrinter Pro के साथ जेपीईजी छवियों को पीडीएफ के "प्रिंट" करने के लिए नीचे दिए गए फ़ंक्शन का सफलतापूर्वक उपयोग किया है। हालांकि, वहां कई छवि प्रिंटर हैं। आपको पसंद है उसे चुनें। आपके द्वारा चुने गए छवि प्रिंटर और छवि प्रिंटर का उपयोग करने वाले मानक फ़ाइल सेविंग प्रारूप के आधार पर कुछ कोड को थोड़ा सा बदलना पड़ सकता है।

import win32api 
import os 

def pdf_to_jpg(pdfPath, pages): 
    # print pdf using jpg printer 
    # 'pages' is the number of pages in the pdf 
    filepath = pdfPath.rsplit('/', 1)[0] 
    filename = pdfPath.rsplit('/', 1)[1] 

    #print pdf to jpg using jpg printer 
    tempprinter = "ImagePrinter Pro" 
    printer = '"%s"' % tempprinter 
    win32api.ShellExecute(0, "printto", filename, printer, ".", 0) 

    # Add time delay to ensure pdf finishes printing to file first 
    fileFound = False 
    if pages > 1: 
     jpgName = filename.split('.')[0] + '_' + str(pages - 1) + '.jpg' 
    else: 
     jpgName = filename.split('.')[0] + '.jpg' 
    jpgPath = filepath + '/' + jpgName 
    waitTime = 30 
    for i in range(waitTime): 
     if os.path.isfile(jpgPath): 
      fileFound = True 
      break 
     else: 
      time.sleep(1) 

    # print Error if the file was never found 
    if not fileFound: 
     print "ERROR: " + jpgName + " wasn't found after " + str(waitTime)\ 
       + " seconds" 

    return jpgPath 

जिसके परिणामस्वरूप jpgPath चर आप पीडीएफ मुद्रित के अंतिम jpeg पृष्ठ का पथ स्थान बताता है। यदि आपको कोई अन्य पृष्ठ प्राप्त करने की आवश्यकता है, तो आप पहले से प्राप्त करने के लिए पथ को संशोधित करने के लिए कुछ तर्क जोड़ सकते हैं

संबंधित मुद्दे