পিডিএফ ফাইল রেন্ডার করুন, ফ্রি পাইথন লাইব্রেরির মাধ্যমে টেক্সট এবং ইমেজ বের করুন

ফ্রি পাইথন এপিআই পিডিএফ ফাইল সম্পাদনা এবং রেন্ডার করার অনুমতি দেয়; টেক্সট ও ইমেজ এক্সট্র্যাক্ট করুন, পিডিএফ পেজ এডিট করুন, মার্জ/বিভক্ত করুন এবং পিডিএফ কনভার্ট করুন সহজে।

PyMuPDF হল একটি লাইটওয়েট ওপেন সোর্স পাইথন API যা MuPDF-তে পাইথন বাইন্ডিং এবং অ্যাবস্ট্রাকশন যোগ করে। API আকারে ছোট কিন্তু তবুও খুব দ্রুত এবং প্রদত্ত পিডিএফ, XPS, OpenXPS, CBZ, EPUB, এবং FB2 (eBooks) ফরম্যাটের পাশাপাশি প্রায় 10টি জনপ্রিয় ইমেজ ফরম্যাটগুলিও খোলা যেতে পারে সহ বেশ কয়েকটি জনপ্রিয় ডকুমেন্ট ফরম্যাট সমর্থন করে। নথির মতো পরিচালনা করা হয়। PyMuPD খুবই নির্ভরযোগ্য এবং এটি তার শীর্ষ রেন্ডারিং ক্ষমতার জন্য পরিচিত। যেহেতু লাইব্রেরি খুব কম ওজনের তাই এটি এমন প্ল্যাটফর্মগুলির জন্য একটি দুর্দান্ত পছন্দ করে তোলে যেখানে সাধারণত সীমিত সম্পদ থাকে, যেমন স্মার্টফোন।

পিডিএফ ডকুমেন্ট রেন্ডারিং এবং রূপান্তরগুলির জন্য PyMuPDF API দ্বারা সমর্থিত অসংখ্য মৌলিক এবং উন্নত বৈশিষ্ট্য রয়েছে, যেমন PDF তে PNG রূপান্তর করা, মেটাডেটা অ্যাক্সেস করা এবং দেখা, রূপরেখার সাথে কাজ করা, একটি পৃষ্ঠাকে একটি রাস্টার বা ভেক্টর (SVG) ছবিতে রেন্ডার করা, PDF পাঠ্য সার্চ সাপোর্ট, পিডিএফ পেজ থেকে টেক্সট এক্সট্রাক্ট করা, পিডিএফ থেকে ইমেজ এক্সট্রাক্ট করা, জিইউআইতে ইমেজ ডিসপ্লে করা, পিডিএফ পেজ পরিবর্তন করা, নতুন পিডিএফ পেজ তৈরি করা, অবাঞ্ছিত পিডিএফ পেজ মুছে ফেলা, ডাটা এমবেড করা ইত্যাদি। PyMuPDF ম্যাক, লিনাক্স এবং উইন্ডোজের মতো অসংখ্য প্ল্যাটফর্মের জন্য সমর্থন অন্তর্ভুক্ত করেছে।

Previous Next

PyMuPDF দিয়ে শুরু করা

PyMuPDF পিপ ব্যবহার করে ইনস্টল করা যেতে পারে, নিম্নলিখিত কমান্ডগুলি পাইথন হুইল থেকে ইনস্টল করা হবে যদি একটি আপনার প্ল্যাটফর্মের জন্য উপলব্ধ থাকে।

পিপের মাধ্যমে PyMuPDF  ইনস্টল করুন

 python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
 

গিট রিপোজিটরির মাধ্যমে PyMuPDF ক্লোন করুন

 git clone https://github.com/pymupdf/PyMuPDF.git 

এটি ম্যানুয়ালি ইনস্টল করাও সম্ভব; সরাসরি GitHub রিপোজিটরি থেকে সর্বশেষ রিলিজ ফাইল ডাউনলোড করুন।

পাইথনের মাধ্যমে পিডিএফ ফাইলগুলিতে পাঠ্য অনুসন্ধান করা হচ্ছে

ইন্টারনেট জুড়ে নথিগুলি ভাগ করে নেওয়ার জন্য PDF হল বিশ্বের অন্যতম প্রিয় ফাইল ফর্ম্যাট কারণ এটি এর ভিতরে সমস্ত পাঠ্য বিন্যাস এবং গ্রাফিক্স ধরে রাখে। কিন্তু অন্যান্য নথির তুলনায় এই ফাইলগুলির ভিতরে পাঠ্য অনুসন্ধান করা সহজ নয়। বিনামূল্যে PyMuPDF লাইব্রেরি সফ্টওয়্যার বিকাশকারীদের তাদের Python অ্যাপ্লিকেশনের মধ্যে পাঠ্য-অনুসন্ধান ক্ষমতা যোগ করার অনুমতি দেয়। এটি পৃষ্ঠায় কোথায় একটি নির্দিষ্ট পাঠ্য স্ট্রিং বিদ্যমান তা অনুসন্ধান করার অনুমতি দেয়।

পিডিএফ পৃষ্ঠায় যেখানে পাইথনের মাধ্যমে টেক্সট স্ট্রিং প্রদর্শিত হয় সেখানে অনুসন্ধান করুন

areas = page.search_for("mupdf") 

Python API এর মাধ্যমে PDF টেক্সট এবং ইমেজ এক্সট্র্যাক্ট করা হচ্ছে

ওপেন সোর্স PyMuPDF লাইব্রেরিতে PDF টেক্সট এবং ইমেজগুলির সাথে কাজ করার জন্য বেশ কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য অন্তর্ভুক্ত করা হয়েছে। লাইব্রেরি পিডিএফ ডকুমেন্ট থেকে টেক্সট এবং ইমেজ বের করার জন্য বিভিন্ন ফাংশন প্রদান করেছে। ডিফল্টরূপে, এটি লাইন বিরতি সহ প্লেইন টেক্সট নিষ্কাশনের অনুমতি দেয়। কোন বিন্যাস, কোন টেক্সট অবস্থান বিবরণ, কোন ছবি. অধিকন্তু, এটি পাঠ্য ব্লকের একটি তালিকা তৈরি করা, শব্দগুলির একটি তালিকা তৈরি করা, যে কোনও চিত্র সহ পৃষ্ঠার একটি সম্পূর্ণ ভিজ্যুয়াল সংস্করণ তৈরি করা এবং আরও অনেক কিছু সমর্থন করে।

কিভাবে Python API এর মাধ্যমে PDF থেকে টেক্সট এক্সট্রাক্ট করবেন

from operator import itemgetter
from itertools import groupby
import fitz
doc = fitz.open( 'mydocument.pdf' )
pages = [ doc[ i ] for i in range( doc.pageCount ) ]
for page in pages:
  text_words = page.getTextWords()
  # The words should be ordered by y1 and x0
  sorted_words = SortedCollection( key = itemgetter( 3, 0 ) )
  for word in text_words:
    sorted_words.insert( word )
  # At this point you already have an ordered list. If you need to 
  # group the content by lines, use groupby with y1 as a key
  lines = groupby( sorted_words, key = itemgetter( 3 ) )

Python APPs-এ পিডিএফ ডকুমেন্ট যোগ করুন এবং বিভক্ত করুন

বিভিন্ন পিডিএফ ফাইল একত্রিত করা একটি খুব দরকারী বৈশিষ্ট্য যা ব্যবহারকারীদের এক ডজন আলাদা পিডিএফ থাকার পরিবর্তে একটি পিডিএফ রাখার ক্ষমতা দেয়। বিনামূল্যে এবং ওপেন-সোর্স ক্রস-প্ল্যাটফর্ম PyMuPDF লাইব্রেরি সফ্টওয়্যার প্রোগ্রামারদের বিভিন্ন ফাইল মার্জ করার বা বিভিন্ন PDF নথির মধ্যে পৃষ্ঠাগুলিকে সহজে অনুলিপি করার ক্ষমতা দেয়। এটি ব্যবহারকারীদের পাইথন কোডের মাত্র কয়েকটি লাইনের সাথে ছোট ফাইলগুলিতে বড় পিডিএফ নথিগুলিকে বিভক্ত করার ক্ষমতা দেয়। পিডিএফ ডকুমেন্টের কিছু নির্দিষ্ট পৃষ্ঠা নির্বাচন করা এবং এটি থেকে একটি নতুন নথি তৈরি করাও সম্ভব।

প্রথম এবং শেষ 10 পৃষ্ঠা থেকে নতুন নথি তৈরি করে

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

Python এর মাধ্যমে CSV তে PDF মেটাডেটা পড়ুন এবং রপ্তানি করুন

ওপেন সোর্স PyMuPDF লাইব্রেরি কোনো বাহ্যিক নির্ভরতা ছাড়াই PDF ফাইলের মেটাডেটা অ্যাক্সেস এবং পড়ার জন্য সম্পূর্ণ কার্যকারিতা প্রদান করেছে। এটি বিভিন্ন ধরণের মেটাডেটা কী সমর্থন করে যেমন সৃষ্টির তারিখ, লেখক, শিরোনাম, স্রষ্টার অ্যাপ্লিকেশন, যেকোনো বিষয়, এনক্রিপশন পদ্ধতি, ফাইল বিন্যাস ইত্যাদি। CSV ফরম্যাটে মেটাডেটা রপ্তানি করাও সম্ভব।

 

Python API এর মাধ্যমে CSV তে PDF মেটাডেটা রপ্তানি করুন

import csv
import fitz
import argparse
parser = argparse.ArgumentParser(description="Enter CSV delimiter [;], CSV filename and documment filename")
parser.add_argument('-d', help='CSV delimiter [;]', default = ';')
parser.add_argument('-x', help='delete XML info [n]', default = 'n')
parser.add_argument('-csv', help='CSV filename')
parser.add_argument('-pdf', help='PDF filename')
args = parser.parse_args()
delim = args.d               # requested CSV delimiter character
assert args.csv, "missing CSV filename"
assert args.pdf, "missing PDF filename"
print "delimiter", args.d
print "xml delete", args.x
print "csv file", args.csv
print "pdf file", args.pdf
print "----------------------------------------"
doc = fitz.open(args.pdf)
oldmeta = doc.metadata
print "old metadata:"
for k,v in oldmeta.items():
    print k, ":",v
with open(args.csv) as tocfile:
    tocreader = csv.reader(tocfile, delimiter = delim)
    for row in tocreader:
        assert len(row) == 2, "each row must contain 2 entries"
        oldmeta[row[0]] = row[1]
print "----------------------------------------"
print "\nnew metadata:"
for k,v in oldmeta.items():
    print k, ":",v
doc.set_metadata(oldmeta)
doc.saveIncr()
 বাংলা