如何使用 ImageMagick 对扫描的文本页面进行歪斜校正?

问题描述 投票:0回答:5

我扫描的文档没有完全笔直扫描,因此文本的方向不是完全水平,即每行可能有 10° 的斜度。

我的理解是 ImageMagick 中的纠偏选项应该可以解决这个问题,例如

convert skewed_1500.jpeg -deskew 40% skewed_1500_not.jpg

但它对输出文件没有任何明显的影响。

我已附上倾斜和校正倾斜的图像以进行比较。

首先是原图:

然后是据称已校正歪斜的图像:

imagemagick-convert
5个回答
14
投票

我会尝试更大的值,例如 80%,否则 Imagemagick 论坛成员有一个可能更好的 bash 脚本:http://www.fmwconcepts.com/imagemagick/textdeskew/index.php


4
投票

OCRmyPDF

您还可以先让 ImageMagick 将 JPG 转换为 PDF (

convert input.jpg input.pdf
),然后让 OCRmyPDF 校正 PDF,然后校正页面:

ocrmypdf --deskew --tesseract-timeout=0 input.pdf output.pdf

使用您的示例页面,我想说生成的文本是直接的:

straightened page, after running OCRmyPDF

here所述,

--tesseract-timeout=0
禁用光学字符识别。

当然,您也可以对 PDF 进行倾斜校正并使其可一次性搜索:

ocrmypdf --deskew -l fra input.pdf output.pdf

运行此程序之前,请确保安装了 Tesseract 的法语语言包。 这里是说明。

裁剪 PDF

要去除 PDF 两侧的黑色部分和底部的白色部分,您可以使用

pdfcrop
(通常是 TeX Live 的一部分):

# Remove margins at left, top, right, and bottom
pdfcrop --margins '-60 0 -50 -430' output.pdf cropped_output.pdf

裁剪并校正歪斜的 PDF:

PDF cropped with pdfcrop


0
投票

这不使用 Imagemagick,但它对扫描的文档/图像进行歪斜校正的作用相同。

以下是可以帮助您校正图像的代码:

import numpy as np
from skimage import io
from skimage.transform import rotate
from skimage.color import rgb2gray
from deskew import determine_skew
from matplotlib import pyplot as plt

def deskew(_img):
    image = io.imread(_img)
    grayscale = rgb2gray(image)
    angle = determine_skew(grayscale)
    rotated = rotate(image, angle, resize=True) * 255
    return rotated.astype(np.uint8)

def display_before_after(_original):
    plt.subplot(1, 2, 1)
    plt.imshow(io.imread(_original))
    plt.subplot(1, 2, 2)
    plt.imshow(deskew(_original))

display_before_after('img_35h.jpg')

参考和来源:http://aishelf.org/deskew/


0
投票

您在 Imagemagick 中拥有正确的语法,但只需将百分比增加到 60% 即可。

输入:

convert skewed_1500.jpeg -deskew 60% x.jpg


0
投票
magick <image_source>  -set option:angle "%[minimum-bounding-box:unrotate]" -background white -rotate "%[angle]" <image_target>

在裁剪边距后使用。 这将通过找到黑色像素的凸包(通常页面上的文本位于矩形中)并将其旋转到直角来找到合适的角度。 在处理扫描文本时,我更喜欢处理二值化图像,并避免 jpeg(当您编写或转换时,如果不小心压缩管理,文本周围会出现灰色像素)。

© www.soinside.com 2019 - 2024. All rights reserved.