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