পাইথন একটি বহুমুখী ভাষা কারণ এটি বিভিন্ন প্রয়োজনে কাজ করার জন্য বিশাল লাইব্রেরি সরবরাহ করে। আমরা সবাই পোর্টেবল ডকুমেন্ট ফরম্যাট (পিডিএফ) ফাইলগুলিতে কাজ করি। পাইথন পিডিএফ ফাইলের সাথে কাজ করার বিভিন্ন উপায় প্রদান করে। এতে আমরা পিডিএফ ফাইলের সাথে কাজ করার জন্য PyPDF2 নামক পাইথন লাইব্রেরি ব্যবহার করতে যাচ্ছি।
PyPDF2 হল একটি বিশুদ্ধ-পাইথন পিডিএফ লাইব্রেরি যা পিডিএফ ফাইলগুলির পৃষ্ঠাগুলিকে বিভক্ত করতে, একত্রে একত্রিত করতে, ক্রপ করতে এবং রূপান্তর করতে সক্ষম। এটি পিডিএফ ফাইলগুলিতে কাস্টম ডেটা, দেখার বিকল্প এবং পাসওয়ার্ড যোগ করতে পারে। এটি পিডিএফ থেকে পাঠ্য এবং মেটাডেটা পুনরুদ্ধার করতে পারে পাশাপাশি সম্পূর্ণ ফাইলগুলিকে একত্রিত করতে পারে৷
যেহেতু আমরা PyPDF2 দিয়ে পিডিএফ-এ একাধিক অপারেশন করতে পারি, তাই এটি একটি সুইস-আর্মি ছুরির মতো কাজ করে।
শুরু করা
কারণ pypdf2 একটি স্ট্যান্ডার্ড পাইথন প্যাকেজ, তাই আমাদের এটি ইনস্টল করতে হবে। ভাল জিনিস হল এটা খুবই সহজ, আমরা এটি ইনস্টল করতে পিপ ব্যবহার করতে পারি। আপনার কমান্ড টার্মিনালে কেবল নীচের কমান্ডটি চালান:
C:\Users\rajesh>pip install pypdf2 Collecting pypdf2 Downloading https://files.pythonhosted.org/packages/b4/01/68fcc0d43daf4c6bdbc6b33cc3f77bda531c86b174cac56ef0ffdb96faab/PyPDF2-1.26.0.tar.gz (77kB) 100% |████████████████████████████████| 81kB 83kB/s Building wheels for collected packages: pypdf2 Building wheel for pypdf2 (setup.py) ... done Stored in directory: C:\Users\rajesh\AppData\Local\pip\Cache\wheels\53\84\19\35bc977c8bf5f0c23a8a011aa958acd4da4bbd7a229315c1b7 Successfully built pypdf2 Installing collected packages: pypdf2 Successfully installed pypdf2-1.26.0
যাচাই করতে, পাইথন শেল থেকে pypdf2 আমদানি করুন
>>> import PyPDF2 >>> Successful, Great.
মেটাডেটা বের করা হচ্ছে
আমরা যেকোনো পিডিএফ থেকে কিছু গুরুত্বপূর্ণ দরকারী ডেটা বের করতে পারি। উদাহরণস্বরূপ, আমরা নথির লেখক, এর শিরোনাম, বিষয় এবং পিডিএফ ফাইলে থাকা পৃষ্ঠার সংখ্যা সম্পর্কে তথ্য বের করতে পারি।
pypdf2 প্যাকেজ ব্যবহার করে পিডিএফ ফাইল থেকে দরকারী তথ্য বের করার জন্য নীচে পাইথন প্রোগ্রাম রয়েছে৷
from PyPDF2 import PdfFileReader def extract_pdfMeta(path): with open(path, 'rb') as f: pdf = PdfFileReader(f) info = pdf.getDocumentInfo() number_of_pages = pdf.getNumPages() print("Author: \t", info.author) print() print("Creator: \t", info.creator) print() print("Producer: \t",info.producer) print() print("Subject: \t", info.subject) print() print("title: \t",info.title) print() print("Number of Pages in pdf: \t",number_of_pages) if __name__ == '__main__': path = 'DeepLearning.pdf' extract_pdfMeta(path)
আউটপুট
Author: Nikhil Buduma,Nicholas Locascio Creator: AH CSS Formatter V6.2 MR4 for Linux64 : 6.2.6.18551 (2014/09/24 15:00JST) Producer: Antenna House PDF Output Library 6.2.609 (Linux64) Subject: None title: Fundamentals of Deep Learning Number of Pages in pdf: 298
তাই পিডিএফ ফাইল না খুলেই আমরা পিডিএফ ফাইল থেকে কিছু প্রয়োজনীয় তথ্য পেতে পারি।
পিডিএফ থেকে পাঠ্য বের করা
আমরা পিডিএফ থেকে পাঠ্য বের করতে পারি। যদিও এতে ছবি তোলার জন্য অন্তর্নির্মিত সমর্থন রয়েছে।
আসুন আমরা উপরে ডাউনলোড করা pdfs ফাইলের একটি নির্দিষ্ট পৃষ্ঠা (উদাহরণস্বরূপ:পৃষ্ঠা 50) থেকে পাঠ্য বের করার চেষ্টা করি।
#Import pypdf2 from PyPDF2 import PdfFileReader def extract_pdfText(path): with open(path, 'rb') as f: pdf = PdfFileReader(f) # get the 50th page page = pdf.getPage(50) print(page) print('Page type: {}'.format(str(type(page)))) #Extract text from the 50th page text = page.extractText() print(text) if __name__ == '__main__': path = 'DeepLearning.pdf' extract_pdfText(path)
আউটপুট
{'/Annots': IndirectObject(1421, 0), '/Contents': IndirectObject(179, 0), '/CropBox': [0, 0, 595.3, 841.9], '/Group': {'/CS': '/DeviceRGB', '/S': '/Transparency', '/Type': '/Group'}, '/MediaBox': [0, 0, 504, 661.5], '/Parent': IndirectObject(4863, 0), '/Resources': IndirectObject(1423, 0), '/Rotate': 0, '/Type': '/Page' } Page type: <class 'PyPDF2.pdf.PageObject'> time. In inverted dropout, any neuron whose activation hasn†t been silenced has its output divided by p before the value is propagated to the next layer. With this fix, Eoutput=p⁄xp+1ƒ p⁄0= x, and we can avoid arbitrarily scaling neuronal output at test time. SummaryIn this chapter, we†ve learned all of the basics involved in training feed-forward neural networks. We†ve talked about gradient descent, the backpropagation algorithm, as well as various methods we can use to prevent overfitting. In the next chapter, we†ll put these lessons into practice when we use the TensorFlow library to efficiently implement our first neural networks. Then in Chapter 4 , we†ll return to the problem of optimizing objective functions for training neural networks and design algorithmsto significantly improve performance. These improvements will enable us to process much more data, which means we†ll be able to build more comprehensive models. Summary | 37
যদিও আমরা পৃষ্ঠা 50 থেকে কিছু পাঠ্য পেতে সক্ষম হয়েছি কিন্তু এটি তেমন পরিষ্কার নয়। দুর্ভাগ্যবশত, pdfs থেকে টেক্সট বের করার জন্য pypdf2-এর খুব সীমিত সমর্থন রয়েছে।
পিডিএফ ফাইলের নির্দিষ্ট পৃষ্ঠা ঘোরান
>>> import PyPDF2 >>> deeplearningFile = open('DeepLearning.pdf', 'rb') >>> pdfReader = PyPDF2.PdfFileReader(deeplearningFile) >>> page = pdfReader.getPage(0) >>> page.rotateClockwise(90) { '/Contents': [IndirectObject(4870, 0), IndirectObject(4871, 0), IndirectObject(4872, 0), IndirectObject(4873, 0), IndirectObject(4874, 0), IndirectObject(4875, 0), IndirectObject(4876, 0), IndirectObject(4877, 0)], '/CropBox': [0, 0, 595.3, 841.9], '/MediaBox': [0, 0, 504, 661.5], '/Parent': IndirectObject(4862, 0), '/Resources': IndirectObject(4889, 0), '/Rotate': 90, /Type': '/Page' } >>> pdfWriter = PyPDF2.PdfFileWriter() >>> pdfWriter.addPage(page) >>> resultPdfFile = open('rotatedPage.pdf', 'wb') >>> pdfWriter.write(resultPdfFile) >>> resultPdfFile.close() >>> deeplearningFile.close()
আউটপুট