1. מוצרים
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

מגדר PDF קבצים, Extract Text תמונות דרך ספריית Python חינם

Python API חינם מאפשר לערוך ולכתוב PDF קבצים; לחלץ טקסט תמונות, לערוך PDF עמודים, למזג / פיצול להמיר PDF בקלות.

PyMuPDF הוא קוד פתוח קל משקל Python API אשר מוסיף קישור Python והפשטה PDF. API הוא קטן בגודל אבל עדיין מאוד מהיר ומסופק תומך במספר פורמטי מסמכים פופולריים כולל PDF, XPS, OpenXPS, CB, PUB, ו FB2 (eBooks) פורמטים כמו גם 10 פורמטים פופולריים. ה-PyMuPD הוא אמין מאוד וידוע בזכות יכולת העיבוד העליונה שלו. מכיוון שהספרייה היא משקל קל מאוד, היא בחירה מצוינת עבור פלטפורמות שבהן המשאבים בדרך כלל מוגבלים, כמו טלפונים חכמים.

Previous Next

להתחיל עם PyMuPDF

ניתן להתקין PyMuPDF באמצעות צינור, הפקודות הבאות יתקנו מתוך גלגל Python אם אחד זמין עבור הפלטפורמה שלך.

להתקין PyMuPDF באמצעות צינורות

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

Clone PyMuPDF באמצעות חשבון Git

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

חיפוש טקסט ב PDF קבצים דרך Python

PDF הוא אחד הפורמטים המועדפים בעולם לשיתוף מסמכים ברחבי האינטרנט משום שהוא שומר על כל עיצוב הטקסט וגרפיקה בתוכו. אבל לא קל לחפש טקסט בתוך קבצים אלה בהשוואה למסמכים אחרים. ספריית PyMuPDF החינמית מאפשרת למפתחי תוכנה להוסיף יכולות לחיפוש טקסט בתוך יישומי Python. זה מאפשר לחפש היכן בעמוד מחרוזת טקסט מסוימת קיימת.

חיפוש איפה על PDF עמודים טקסט מחרוזת יופיע דרך Python

areas = page.search_for("mupdf") 

PDF טקסט ותמונות דרך Python API

ספריית הקוד הפתוח YouPDF כללה מספר תכונות חשובות לעבודה עם PDF טקסט ותמונות. הספרייה סיפקה פונקציות שונות לחלץ טקסט כמו גם תמונות מ PDF מסמכים. כברירת מחדל, זה מאפשר את החילוץ של טקסט פשוט עם הפסקות שורה. אין עיצוב, אין פרטי מיקום טקסט, אין תמונות. יתר על כן, הוא תומך ביצירת רשימה של בלוקים טקסט, יצירת רשימה של מילים, יצירת גרסה חזותית מלאה של הדף כולל תמונות, ועוד.

כיצד להוציא טקסט מ PDF דרך Python API

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 ) )

הצטרפו וחילקו PDF מסמכים ב-Python

שילוב של PDF קבצים שונים הוא תכונה שימושית מאוד שמעניקה למשתמשים את היכולת לקבל אחד PDF במקום תריסר PDF נפרד. הספרייה חוצה פלטפורמה חופשית קוד פתוח YouPDF נותן למתכנתים את הכוח למזג קבצים שונים או להעתיק דפים שונים PDF מסמכים בקלות. זה גם נותן למשתמשים את הכוח לפצל PDF מסמכים גדולים לקבצים קטנים יותר עם רק כמה שורות של קוד Python. ניתן גם לבחור כמה דפים ספציפיים של מסמך PDF וליצור מסמך חדש ממנו.

יצירת מסמכים חדשים מהעמודים הראשונים והאחרונים

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")

קרא ייצוא PDF Metadata ל CSV דרך Python

ספריית הקוד הפתוח YouPDF סיפקה פונקציונליות מלאה לגישה ולקריאה של PDF קבצים ללא כל תלות חיצונית. הוא תומך בסוגים שונים של מפתחות metadata כגון תאריך יצירה, מחבר, כותרת, יישום יוצר, כל נושא, שיטת הצפנה, תבנית קובץ, וכן הלאה. ניתן גם לייצא metadata ל-CSV.

 

ייצוא PDF Metadata עד CSV דרך פיתון API

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()
 עִברִית