Manipulating images with the python imaging library

Использование фильтров в Pillow

Оригинальное изображение с медузой

Pillow позволяет использовать множество различных фильтров для обработки изображения. Они являются частью модуля ImageFilter. Давайте рассмотрим несколько примеров использования метода :

Python

from PIL import ImageFilter
from PIL import Image

image = Image.open(‘jelly.jpg’)
blurred_jelly = image.filter(ImageFilter.BLUR)
blurred_jelly.save(‘/path/to/photos/blurry_jelly.png’)

1
2
3
4
5
6

fromPIL importImageFilter

fromPIL importImage

image=Image.open(‘jelly.jpg’)

blurred_jelly=image.filter(ImageFilter.BLUR)

blurred_jelly.save(‘/path/to/photos/blurry_jelly.png’)

Программа берет определенное изображение, создает на его основе размытую картинку, используя , и сохраняет полученный результат на диск с помощью метода . Итоговое фото со слегка размытой медузой:

Размытая картинка с медузой

Однако в подобающем большинстве случаев размывать изображение нет нужды, наоборот — требуется увеличить резкость. Pillow меняет резкость картинки следующим образом:

Python

from PIL import ImageFilter
from PIL import Image

image = Image.open(‘/path/to/photos/jelly.jpg’)
blurred_jelly = image.filter(ImageFilter.SHARPEN)
blurred_jelly.save(‘/path/to/photos/sharper_jelly.png’)

1
2
3
4
5
6

fromPIL importImageFilter

fromPIL importImage

image=Image.open(‘/path/to/photos/jelly.jpg’)

blurred_jelly=image.filter(ImageFilter.SHARPEN)

blurred_jelly.save(‘/path/to/photos/sharper_jelly.png’)

Результат после запуска кода выше:

Картинка с медузой после применения фильтра резкости

Кроме того, для увеличения резкости фотографий в Python можно использовать модуль ImageEnhance.

Можно использовать и другие фильтры — , , , и так далее. В коде для одного изображения также можно одновременно использовать несколько фильтров.

Для сравнения эффектов от использования фильтров можете скачать изображения, которые были представлены в примерах выше.

Вырезаем квадрат из прямоугольника

При создании миниатюр записей для блога на Django, зачастую требуется вырезать максимально возможный квадрат из прямоугольного изображения.

Создаем функцию, которая обрезает квадрат из центра прямоугольного изображения:

Python

def crop_max_square(pil_img):
return crop_center(pil_img, min(pil_img.size), min(pil_img.size))

1
2

defcrop_max_square(pil_img)

returncrop_center(pil_img,min(pil_img.size),min(pil_img.size))

Пример использования данной функции:

Python

from PIL import Image

def crop_center(pil_img, crop_width: int, crop_height: int) -> Image:
«»»
Функция для обрезки изображения по центру.
«»»
img_width, img_height = pil_img.size
return pil_img.crop(((img_width — crop_width) // 2,
(img_height — crop_height) // 2,
(img_width + crop_width) // 2,
(img_height + crop_height) // 2))

def crop_max_square(pil_img):
return crop_center(pil_img, min(pil_img.size), min(pil_img.size))

im = Image.open(‘guido-van-rossum.jpg’)
im_new = crop_max_square(im)
im_new.save(‘guido_crop_max_square.jpg’, quality=95)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

fromPIL importImage

defcrop_center(pil_img,crop_widthint,crop_heightint)->Image

«»»

    Функция для обрезки изображения по центру.
    «»»

img_width,img_height=pil_img.size

returnpil_img.crop(((img_width-crop_width)2,

(img_height-crop_height)2,

(img_width+crop_width)2,

(img_height+crop_height)2))

defcrop_max_square(pil_img)

returncrop_center(pil_img,min(pil_img.size),min(pil_img.size))

im=Image.open(‘guido-van-rossum.jpg’)

im_new=crop_max_square(im)

im_new.save(‘guido_crop_max_square.jpg’,quality=95)

Результатом этого кода будет данная картинка:

Манипуляции с изображениями и видео

Python это очень мощный язык; с его помощью
можно решать многие задачи, например,
работать с изображениями. Стандартная
библиотека не имеет встроенного
функционала для этих целей, но следующие
модули вам помогут.

Python Imaging Library (PIL). PIL добавляет в интерпретатор Python возможность обработки изображений. Эта библиотека поддерживает много форматов файлов и предоставляет хороший функционал для работы с графикой.

Gdmodule. Это интерфейс для библиотеки GD, созданной Томасом Баутелом.

VideoCapture. Win32-расширение для доступа к таким видеоустройствам, как веб-камеры (USB) и ТВ-карты.

MoviePy. Библиотека Python для редактирования видео: обрезка, склейка, вставка надписей, нелинейное редактирование, обработка видео и создание пользовательских эффектов.

pyscreenshot. Кроссплатформенный модуль, позволяющий делать скриншоты без установки сторонних библиотек.

Открытие изображения в Python с Pillow

Через Pillow можно легко открыть изображение и отобразить его на экране через внешнюю программу. Взглянем на пример:

Python

from PIL import Image

image = Image.open(‘jelly.jpg’)
image.show()

1
2
3
4

fromPIL importImage

image=Image.open(‘jelly.jpg’)

image.show()

Метод в основном используется для отладки. В примере импортируется модуль Image и открывается указанное изображение. На Unix метод открытия сохраняет изображения во временном PPM файле и открывает его через утилиту . К примеру, на установленной у меня системе Linux картинка открывается через ImageMagick. На Windows изображение сохранится во временной файле BMP и откроется через простую программу вроде Paint.

Platform Support¶

Current platform support for Pillow. Binary distributions are
contributed for each release on a volunteer basis, but the source
should compile and run everywhere platform support is listed. In
general, we aim to support all current versions of Linux, macOS, and
Windows.

Continuous Integration Targets

These platforms are built and tested for every change.

Operating system

Tested Python versions

Tested architecture

Alpine

3.8

x86-64

Arch

3.8

x86-64

Amazon Linux 2

3.7

x86-64

CentOS 7

3.6

x86-64

CentOS 8

3.6

x86-64

Debian 10 Buster

3.7

x86

Fedora 33

3.9

x86-64

Fedora 34

3.9

x86-64

macOS 10.15 Catalina

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 16.04 LTS (Xenial)

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 18.04 LTS (Bionic)

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 20.04 LTS (Focal)

3.8

x86-64

Windows Server 2016

3.6

x86-64

Windows Server 2019

3.6, 3.7, 3.8, 3.9

x86, x86-64

PyPy3

x86

3.9/MinGW

x86, x86-64

Using the Image class¶

The most important class in the Python Imaging Library is the
class, defined in the module with the same name.
You can create instances of this class in several ways; either by loading
images from files, processing other images, or creating images from scratch.

To load an image from a file, use the function
in the module:

>>> from PIL import Image
>>> im = Image.open("hopper.ppm")

If successful, this function returns an object.
You can now use instance attributes to examine the file contents:

>>> print(im.format, im.size, im.mode)
PPM (512, 512) RGB

The attribute identifies the source of an
image. If the image was not read from a file, it is set to None. The size
attribute is a 2-tuple containing width and height (in pixels). The
attribute defines the number and names of the
bands in the image, and also the pixel type and depth. Common modes are “L”
(luminance) for greyscale images, “RGB” for true color images, and “CMYK” for
pre-press images.

If the file cannot be opened, an exception is raised.

Once you have an instance of the class, you can use
the methods defined by this class to process and manipulate the image. For
example, let’s display the image we just loaded:

>>> im.show()

Note

The standard version of is not very
efficient, since it saves the image to a temporary file and calls a utility
to display the image. If you don’t have an appropriate utility installed,
it won’t even work. When it does work though, it is very handy for
debugging and tests.

Что мы еще не сделали

Мы многого достигли в этом посте, но еще многое предстоит сделать, чтобы усовершенствовать наш проект и подготовить его к работе в реальном мире. Во-первых, мы можем добавить стиль нашему сайту и сделать его более привлекательным для конечного пользователя с помощью CSS. Мы также можем добавить возможность загрузки и сканирования нескольких изображений одновременно и одновременного отображения.

Браузер позволяет нам подключаться к камере машины и снимать изображения, разумеется, с разрешения пользователя. Это может быть очень полезным, особенно на мобильных устройствах. Вместо того, чтобы пользователю приходилось снимать и сохранять изображение, а затем загружать его на веб-сайт, если мы добавим функцию камеры, мы можем позволить пользователю выполнять операции непосредственно из веб-приложения Flask. Это ускорит процесс сканирования.

Вы также можете создать инструмент CLI. Он позволит вам запустить команду, включая местоположение изображения, а затем распечатать вывод сканера на ваш терминал или отправить его в базу данных или API. Если вы выбрали этот путь, Docopt – фантастический инструмент для создания инструментов командной строки с использованием Python.

Installing Pillow

Since Pillow supports versions of Python back to Python 2.4, I’ll only focus on installing Pillow and not the older version of PIL.

Python on a Mac

I’m currently writing this tutorial on a Mac OS X Yosemite 10.10.5, and thus will describe how to install Pillow on a Mac OS X machine. But, don’t worry, I’ll provide a link at the end of this section that describes how to install Pillow on other operating systems.

I just want to note here that Mac OS X comes with Python pre-installed. However, the version most likely will be prior to 3.X.

For instance, on my machine, when I run in the terminal, I get .

Python and pip

A very easy way to install Pillow is through pip.

If you don’t have pip installed on your machine, simply type the following command in your terminal, and you’re all done:

Now, to install Pillow, simply type the following in your terminal:

That was easy, wasn’t it?

As I promised, for installing Pillow on other operating systems, you can find the instructions for that here.

Pillow

Python Imaging Library (Fork)

Pillow is the “friendly” PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and Contributors.

Introduction

Note

Pillow >= 2.1.0 no longer supports “import _imaging”. Please use “from PIL.Image import core as _imaging” instead.

Note

Pillow < 2.0.0 supports Python versions 2.4, 2.5, 2.6, 2.7; Pillow >= 2.0.0 supports Python versions 2.6, 2.7, 3.2, 3.3.

The fork author’s goal is to foster active development of PIL through:

What about the official PIL?

Note

Prior to Pillow 2.0.0, very few image code changes were made. Pillow 2.0.0 added Python 3 support and includes many bug fixes from many contributors.

As more time passes since the last PIL release, the likelyhood of a new PIL release decreases. However, we’ve yet to hear an official “PIL is dead” announcement. So if you still want to support PIL, please report issues here first:

https://bitbucket.org/effbot/pil-2009-raclette/issues

Then open a Pillow ticket here:

https://github.com/python-imaging/Pillow/issues

Please provide a link to the PIL ticket so we can track the issue(s) upstream.

Installation

Note

PIL and Pillow currently cannot co-exist in the same environment. If you want to use Pillow, please remove PIL first.

You can install Pillow with pip:

$ pip install Pillow
$ easy_install Pillow

Or download the compressed archive from PyPI, extract it, and inside it run:

$ python setup.py install

Community Support

PIL needs you! Please help us maintain the Python Imaging Library here:

  • Freenode (irc://irc.freenode.net#pil)

Financial

Pillow is a volunteer effort led by Alex Clark. If you can’t help with development, please help us financially; your assistance is very much needed and appreciated!

Note

Contributors: please add your name and donation preference here.

Developer Preference
Alex Clark (fork author)

Что мы будем использовать?

Для этого проекта OCR мы будем использовать библиотеку Python-Tesseract или просто PyTesseract, которая является оболочкой для Google Tesseract-OCR Engine.

Я выбрал его, потому что он полностью открыт и разрабатывается и поддерживается Google. Следуйте этим инструкциям, чтобы установить Tesseract на свой компьютер, поскольку от него зависит PyTesseract.

Мы также будем использовать веб-фреймворк Flask для создания нашего простого OCR-сервера, на котором мы можем делать снимки через веб-камеру или загружать фотографии для распознавания символов.

Мы также собираемся использовать Pipenv, поскольку он также выполняет настройку виртуальной среды и управление требованиями.

Помимо этого, мы также будем использовать библиотеку Pillow, которая является ответвлением Python Imaging Library (PIL) для обработки открытия и обработки изображений во многих форматах.

В этом посте мы сконцентрируемся на PyTesseract, хотя есть и другие библиотеки Python, которые могут помочь вам извлекать текст из изображений, например:

  • Textract: который может извлекать данные из PDF-файлов, но является тяжелым пакетом.
  • Pyocr: предлагает больше вариантов обнаружения, таких как предложения, цифры или слова.

Data Science и математика

Для Python есть много расширений, которые
можно использовать в научных целях,
например, в математике, науке о данных
и инженерии.

SciPy. SciPy (произносится как «сай пай») это экосистема программного обеспечения с открытым кодом для математики, науки и инженерии.

Matplotlib. Библиотека Python для создания 2D-графиков. Генерирует пригодные для печати изображения в разных форматах. Matplotlib может использоваться в скриптах, интерпретаторе Python, в Jupyter Notebook, на серверах веб-приложений и в GUI-инструментарии.

Pandas. Быстрый, мощный, гибкий и легкий в использовании инструмент для анализа данных и работы с данными. Имеет открытый исходный код.

Numpy. Библиотека, обеспечивающая поддержку больших, многомерных массивов и матриц. Для работы с этими массивами Numpy имеет обширную коллекцию высокоуровневых математических функций.

scikit-image

scikit-image — это Python­-пакет с открытым кодом, который работает с массивами . Он реализует алгоритмы и утилиты для использования в исследовательских, образовательных и промышленных приложениях. Это весьма простая и понятная библиотека даже для новичков в экосистеме Python. Данная библиотека содержит высококачественный и рецензированный код, написанный активным сообществом добровольцев.

Примеры

Пакет импортируется как , а большинство функций находится внутри подмодулей. Несколько примеров использования :

Фильтрация изображений

Сопоставление шаблонов через функцию match_template

Больше примеров доступно в галерее.

Другие параметры PyTesseract

У Python-Tesseract есть больше возможностей, которые вы можете изучить. Например, вы можете указать язык с помощью флага lang:

pytesseract.image_to_string(Image.open(filename), lang='fra')

Это результат сканирования изображения без lang:

А теперь с lang:

Платформа также оптимизирована для лучшего определения языков, как показано на снимках экрана.

Без flag lang скрипт пропустил некоторые французские слова, но после введения flag он смог обнаружить весь французский контент. Перевод невозможен, но все равно впечатляет. Официальная документация Tesseract включает в себя поддерживаемые языки в этом разделе.

Ориентация и обнаружение скриптов также входят в число возможностей PyTesseract, и это помогает в обнаружении используемых шрифтов и ориентации текста на данном изображении. Если мы можем сослаться на рукописное изображение, которое мы скачали ранее:

print(pytesseract.image_to_osd(Image.open('downloaded_handwritten.png')))

На изображении не было информации о номере страницы, поэтому это не было обнаружено. Движок Tesseract способен извлекать информацию об ориентации текста на изображении и повороте. Уверенность в ориентации – это показатель уверенности двигателя в обнаруженной ориентации, которая действует как ориентир, а также показывает, что она не всегда на 100% точна. Раздел скрипта обозначает систему письма, используемую в тексте, и за ним также следует маркер уверенности.

Если бы мы следили за распознанными символами и их границами боксов, PyTesseract добивается этого с помощью pytesseract.image_to_boxes (Image.open (‘loaded_handwritten.png’)).

Это некоторые из возможностей PyTesseract среди других, такие как преобразование извлеченного текста в PDF-файл с возможностью поиска или вывод HOCR.

Pillow show image

In the first example we read an image file and show it in an external program.

show_image.py

#!/usr/bin/python

from PIL import Image
import sys

try:
    tatras = Image.open("tatras.jpg")

except IOError:
    print("Unable to load image")
    sys.exit(1)
    
tatras.show()

The program reads a JPG image and displays it in an external application.

from PIL import Image

From the PIL module, we include the class.

tatras = Image.open("tatras.jpg")

The method reads the image file. Pillow can read
over 30 different file formats.

tatras.show()

The method is mainly intended for debugging purposes.
It saves the image into a temporary file and displays it in external program.
This could be ImageMagic on Linux or Paint on Windows.

NumPy

Одна из основных и наиболее популярных Python-библиотек, которая поддерживает массивы. Изображение — это стандартный NumPy-массив, который содержит пиксели точек данных. В результате в процессе выполнения основных NumPy-операций (срезов, масок, индексирования) есть возможность менять пиксельные значения изображения. Непосредственно image можно загрузить с помощю skimage либо отобразить через Matplotlib.

Все нужные ресурсы и документация есть на официальном сайте NumPy.

Вот каким путем можно выполнить маскировку image с помощью NumPy:

Как видим, распознать внешность человека с камерой теперь невозможно.

Рисование линии, многоугольника и точки в Python

  • Линия: :

    • Параметр
      • Указывает несколько координат двух или более точек как ;
      • Рисуются линии, связывающие каждую точку между собой.
    • : Ширина линии в пикселях
  • Многоугольник: :

    • Параметр
      • Указывается несколько координат, трех или более точек как ;
      • Рисуется многоугольник, в котором каждая точка соединяется между собой при помощи линии.
  • Точка: :

    • Параметр
      • Указывается несколько координат одной или более точек как ;
      • Одна точка (в размере одного пикселя) рисуется для каждого координата.

Примеры рисования линий , многоугольника и точки представлены ниже. Каждая точка представляет собой 1 пиксель, потому их трудно увидеть, но они все-таки нарисованы в правой части области.

Python

from PIL import Image, ImageDraw

# Пустой желтый фон.
im = Image.new(‘RGB’, (500, 300), (219, 193, 27))
draw = ImageDraw.Draw(im)

# Три черные линии в шириной в 1 пиксель.
draw.line(
xy=(
(30, 200),
(130, 100),
(80, 50)
), fill=’black’)

# Три красные линии с размером в 5 пикселей.
draw.line(
xy=(
(80, 200),
(180, 100),
(130, 50)
), fill=’red’, width=10)

# Имея три точки и связь между ними, у нас получится синий триугольник.
draw.polygon(
xy=(
(200, 200),
(300, 100),
(250, 50)
), fill=’blue’, outline=(0, 0, 0)
)

# Рисуем три точки.
draw.point(
xy=(
(350, 200),
(450, 100),
(400, 50)
), fill=’black’
)

im.save(‘draw-dots.jpg’, quality=95)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

fromPIL importImage,ImageDraw

 
# Пустой желтый фон.

im=Image.new(‘RGB’,(500,300),(219,193,27))

draw=ImageDraw.Draw(im)

 
# Три черные линии в шириной в 1 пиксель.

draw.line(

xy=(

(30,200),

(130,100),

(80,50)

),fill=’black’)

 
# Три красные линии с размером в 5 пикселей.

draw.line(

xy=(

(80,200),

(180,100),

(130,50)

),fill=’red’,width=10)

 
# Имея три точки и связь между ними, у нас получится синий триугольник.

draw.polygon(

xy=(

(200,200),

(300,100),

(250,50)

),fill=’blue’,outline=(,,)

)
 
# Рисуем три точки.

draw.point(

xy=(

(350,200),

(450,100),

(400,50)

),fill=’black’

)
 

im.save(‘draw-dots.jpg’,quality=95)

Полученный результат:

Thrill Pill и его девушка

О личной жизни молодой рэп-исполнитель старается особо не распространяться. Таким образом, можно сказать, что достоверной информации не так уж и много. Достоверно известно о том, что Тимур Самедов какое-то время имел романтические отношения с девушкой по имени Соня Суркова. В это время влюблённые часто публиковали совместные фотографии и видео. Но в середине 2017 года молодые люди, осознав, что не подходят друг другу, принимают решение расстаться. Сам же Thrill Pill признаётся, что никогда не чувствовал себя одиноким, и проблем с противоположным полом у него не имеется. Впрочем, этому стоит верить, зная каким чувством юмора и харизмой обладает музыкант.

Трилл пилл с девушкой Соней

Mahotas

Mahotas также является Python-библиотекой для компьютерного зрения и обработки изображений. Она содержит стандартные функции по обработке изображений (фильтры и морфологические операции), а также современные возможности компьютерного зрения для вычисления признаков (обнаружение особых точек и локальные дескрипторы). Быстрота разработки обеспечивается Python-интерфейсом, а плюсом для скорости служат алгоритмы на С++. Mahotas — это быстрая библиотека с минималистичным кодом и зависимостями. Более подробно описано в документации.

Ресурсы

Документация содержит инструкции по установке, практические примеры, а также пошаговые уроки по освоению Mahotas.

Пример

Mahotas решает задачи с помощью простого кода. Для задачи «Где Уолли?» Mahotas требуется минимальное количество кода. Вот исходный код.

PIL, он же Pillow

PIL — это Python Imaging Library и бесплатная библиотека, предназначенная для открытия, работы, а также сохранения разных форматов изображений. Неприятная новость заключается в том, что ее разработка остановилась, причем последнее обновление выходило в далеком 2009. Но есть и хорошая новость: существует Pillow — форк PIL, который активно развивается и характеризуется простой установкой. Pillow работает на основных ОС и поддерживает Python 3-й версии. Имеет базовый функционал методов для обработки изображений, в том числе точечные операции, преобразование цветового пространства, фильтры с набором ядер свертки и пр.

Примеры использования и процесс установки хорошо описаны в документации.

Улучшаем image через ImageFilter в Pillow:

Changelog (Pillow)

2.2.0 (2013-10-02)

  • Fix #254: Bug in image transformations resulting from uninitialized memory
  • Fix for encoding of b_whitespace, similar to closed issue #272
  • Fix #273: Add numpy array interface support for 16 and 32 bit integer modes
  • Partial fix for #290: Add preliminary support for TIFF tags.
  • Fix #251 and #326: circumvent classification of pngtest_bad.png as malware
  • Add typedef uint64_t for MSVC.
  • Fix #329: setup.py: better support for C_INCLUDE_PATH, LD_RUN_PATH, etc.
  • Fix #328: _imagingcms.c: include windef.h to fix build issue on MSVC
  • Automatically discover homebrew include/ and lib/ paths on OSX
  • Fix bytes which should be bytearray
  • Add respective paths for C_INCLUDE_PATH, LD_RUN_PATH (rpath) to build
    if specified as environment variables.
  • Fix #312 + gif optimize improvement
  • Be more tolerant of tag read failures
  • Fix #318: Catch truncated zTXt errors.
  • Fix IOError when saving progressive JPEGs.
  • Add RGBA support to ImageColor
  • Fix #304: test for str, not “utf-8”.
  • Fix missing import os in _util.py.
  • Added missing exif tags.
  • Fail on all import errors, fixes #298.
  • Fixed Windows fallback (wasn’t using correct file in Windows fonts).
  • Moved ImageFile and ImageFileIO comments to docstrings.
  • Restore compatibility with ISO C.
  • Use correct format character for C int type.
  • Allocate enough memory to hold pointers in encode.c.
  • Fix #279, fillorder double shuffling bug when FillOrder ==2 and decoding using libtiff.
  • Moved Image module comments to docstrings.
  • Add 16-bit TIFF support, fixes #274.
  • Ignore high ascii characters in string.whitespace, fixes #272.
  • Added clean/build to tox to make it behave like travis.
  • Adding support for metadata in webp images.

2.1.0 (2013-07-02)

  • Add /usr/bin/env python shebangs to all scripts in /Scripts.
  • Add several TIFF decoders and encoders.
  • Added support for alpha transparent webp images.
  • Adding Python 3 support for StringIO.
  • Adding Python3 basestring compatibility without changing basestring.
  • Fix webp encode errors on win-amd64.
  • Better fix for ZeroDivisionError in ImageOps.fit for image.size height is 1.
  • Better support for ICO images.
  • Changed PY_VERSION_HEX, fixes #166.
  • Changes to put everything under the PIL namespace.
  • Changing StringIO to BytesIO.
  • Cleanup whitespace.
  • Don’t skip ‘import site’ on initialization when running tests for inplace builds.
  • Enable warnings for test suite.
  • Fix for ZeroDivisionError in ImageOps.fit for image.size == (1,1)
  • Fix for if isinstance(filter, collections.Callable) crash. Python bug #7624 on <2.6.6
  • Fix #193: remove double typedef declaration.
  • Fix msvc compile errors (#230).
  • Fix rendered characters have been chipped for some TrueType fonts.
  • Fix usage of pilfont.py script.
  • Fresh start for docs, generated by sphinx-apidoc.
  • Introduce –enable-x and fail if it is given and x is not available.
  • Partial work to add a wrapper for WebPGetFeatures to correctly support #204.
  • Significant performance improvement of alpha_composite function.
  • Support explicitly disabling features via –disable-* options.
  • Support selftest.py –installed, fixes #263.
  • Transparent WebP Support, #204
  • Use PyCapsule for py3.1, fixes #237.

2.0.0 (2013-03-15)

  • Add Python 3 support. (Pillow >= 2.0.0 supports Python 2.6, 2.7, 3.2, 3.3. Pillow < 2.0.0 supports Python 2.4, 2.5, 2.6, 2.7.)
  • Add WebP support.
  • Add Tiff G3/G4 support (experimental)
  • Backport PIL’s PNG/Zip improvements.
  • Various 64 bit and Windows fixes.
  • Add testing suite.
  • Added support for PNG images with transparency palette.
  • Many other bug fixes and enhancements by many other people (see commit log and/or docs/CONTRIBUTORS.txt).
  • Special thanks to Christoph Gohlke and Eric Soroos for rallying around the effort to get a release out for PyCon 2013.

1.7.8 (2012-11-01)

  • Removed doctests.py that made tests of other packages fail.
  • Fix opening psd files with RGBA layers when A mode is not of type 65535 but 3.
    Fixes #3

1.7.6 (2012-01-20)

  • Bug fix: freetype not found on Mac OS X with case-sensitive filesystem
  • Bug fix: Backport fix to split() after open() (regression introduced in PIL 1.1.7).

Как настроить?

Начните с установки Pipenv, используя следующую команду через Pip (если вам нужно настроить его, обратитесь к этому).

$ pip install pipenv

Создайте каталог проекта и запустите проект, выполнив следующую команду:

$ mkdir ocr_server  cd ocr_server  pipenv install --three

Теперь мы можем активировать нашу виртуальную среду и начать установку наших зависимостей:

$ pipenv shell
$ pipenv install pytesseract Pillow 

Если вы не будете использовать Pipenv, вы всегда можете использовать подход Pip и Virtual Environment. Следуйте официальной документации, которая поможет вам начать работу с Pip и виртуальной средой:

Примечание. В этом случае вместо pipenv install Pillow будет команда pip install Pillow.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector