如何在python中检测和旋转图像

时间:2019-06-19 09:15:08

标签: python pdf ocr python-tesseract image-preprocessing

我有多个要解析的pdf发票。我将它们转换为图像,并使用ocr从图像中获取文本。一份pdf文件有3页中的2页旋转了90度。如何检测这些旋转的页面并正确旋转它们以使ocr返回正确的信息?

4 个答案:

答案 0 :(得分:1)

要保持图像完整,可以将参数“ expand”设置为True

image = image.rotate(270, expand=True)

答案 1 :(得分:1)

这是一种适用于一张图片的解决方案,但是您可以将其用于一张图片列表,并在将每张图片保存回PDF之前对其进行检查:

#import library
enter code here
from PIL import Image
#open image file
f=Image.open('test.jpg')

#conver to pdf
pdf=f.convert('RGB')

#if width > than height, rotate it to get portrait 
if pdf.width > pdf.height:
pdf=pdf.rotate(270,expand=True)

#save pdf
pdf.save('test.pdf')

答案 2 :(得分:0)

当您说它们是旋转的时,它们是否都像要全部纵向放置一样简单,而有些页面是横向放置?您应该能够从页面方向的PDF中读取元数据,或者如果由于某种原因而无法使用元数据,则可能需要使用这种简单的逻辑来确定它,例如docker swarm list Usage: docker swarm COMMAND Manage Swarm Commands: ca Display and rotate the root CA init Initialize a swarm join Join a swarm as a node and/or manager join-token Manage join tokens leave Leave the swarm unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm

使用Pillow / PIL可以轻松在OCR之前旋转图像:

rotated = image.width > image.height

可能存在页面倒置的情况,除非您有可靠的PDF元数据,否则您可能必须首先以最可能的方向进行OCR(例如,按上述逆时针旋转90度),如果旋转180度后不返回任何文本。

答案 3 :(得分:0)

您可以使用imutils进行旋转,而无需在旋转后切出图像边界。

import cv2 as cv
import imutils
img = cv.imread('your_image.png')
imutils.rotate_bound(img, 270) #### 270 for anti-clockwise or 90 for clockwise