我有多个要解析的 pdf 发票。我将它们转换为图像并使用 ocr 从图像中获取文本。其中一个 pdf 有 3 页中的 2 页旋转 90 度。我如何检测这些旋转的页面并正确旋转它们以使 ocr 返回正确的信息?
问问题
2285 次
4 回答
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')
于 2020-03-09T01:14:47.233 回答
1
要保持图像完整,可以将参数“expand”设置为 True
image = image.rotate(270, expand=True)
于 2020-02-18T06:32:56.643 回答
0
当您说它们被旋转时,是否会像它们都是纵向的而某些页面是横向的一样简单?您应该能够从 PDF 中读取页面方向的元数据,或者如果由于某种原因不可用,您可能需要使用这个简单的逻辑来确定它,比如rotated = image.width > image.height
使用 Pillow/PIL 可以很容易地在 OCR 之前旋转图像:
if rotated:
image = image.rotate(270)
据推测,可能存在页面倒置的情况,除非您从 PDF 中获得可靠的元数据,否则您可能必须首先使用最可能的方向进行 OCR(如上面所说的逆时针 90 度),如果不是返回任何文本旋转 180 度后重试。
于 2019-06-19T10:03:41.093 回答
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
于 2020-10-16T11:50:40.140 回答