1. Товары
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

Рендеринг PDF-файлов, извлечение текста и изображений с помощью бесплатной библиотеки Python

Бесплатный Python API позволяет редактировать и преобразовывать PDF файлов; извлекать текст и изображения, редактировать PDF страниц, с легкостью объединять/раскалывать и конвертировать PDF.

YouPDF является легким открытым исходным кодом Python API, который добавляет привязки Python и абстракцию к MuPDF. API является небольшим по размеру, но все же очень быстрым и обеспеченным поддерживает ряд популярных форматов документов, в том числе PDF, XPS, OpenXPS, CB, PUB и FB2 (eBooks), а также около 10 популярных форматов изображений также могут быть открыты и обработаны как документы. PyMuPD очень надежен и известен своей верхней способностью визуализации. Поскольку библиотека очень легкий вес делает ее отличным выбором для платформ, где ресурсы обычно ограничены, как смартфоны.

Существует множество базовых и расширенных функций, поддерживаемых PyMuPDF API для рендеринга и преобразования документов PDF, таких как преобразование PDF в PNG, доступ и просмотр метаданных, работа с контурами, преобразование страницы в растровое или векторное (SVG) изображение, текст PDF Поддержка поиска, извлечение текста из страницы PDF, извлечение изображений из PDF, отображение изображения в графическом интерфейсе пользователя, изменение страницы PDF, создание новых страниц PDF, удаление ненужных страниц PDF, встраивание данных и т. д. PyMuPDF включает поддержку множества платформ, таких как Mac, Linux и Windows.

Previous Next

Начало с PyMuPDF

PyMuPDF может быть установлен с помощью pip, следующие команды будут установлены с колес Python, если один доступен для вашей платформы.

Установка PyMuPDF через pip

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

Clone PyMuPDF через git Repository

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

Также возможна установка вручную; загрузите файлы последней версии непосредственно из репозитория GitHub.

Поиск текста в PDF файлах через Python

PDF был одним из любимых форматов файлов World’ для обмена документами по всему Интернету, потому что он сохраняет все форматирование текста и графику внутри него. Но искать текст внутри этих файлов непросто по сравнению с другими документами. Бесплатная библиотека YouPDF позволяет разработчикам программного обеспечения добавлять возможности для поиска текста в своих приложениях 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-файлов. Бесплатная кроссплатформенная библиотека PyMuPDF с открытым исходным кодом дает программистам возможность легко объединять разные файлы или копировать страницы из разных PDF-документов. Это также дает пользователям возможность разбивать большие PDF-документы на файлы меньшего размера с помощью всего пары строк кода Python. Также можно выбрать некоторые определенные страницы 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")

Read & Export PDF Metadata to CSV через Python

Библиотека с открытым исходным кодом YouPDF предоставляет полную функциональность для доступа и чтения метаданных PDF файлов без каких-либо внешних зависимостей. Он поддерживает различные типы ключей метаданных, таких как дата создания, автор, заголовок, приложение создателя, любой предмет, метод шифрования, формат файла и так далее. Можно также экспортировать метаданные в формат CSV.

 

Экспорт PDF метаданных на CSV через Python 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()
 Русский