如何避免 OCR 工具 pdfsandwich 产生偏差的结果?

如何避免 OCR 工具 pdfsandwich 产生偏差的结果?

通常,在使用 OCR 工具之前,需要先对扫描的页面进行倾斜校正。在这里,我的输入是直扫描的页面,而 OCR 输出有时会倾斜,顺时针或逆时针。在我使用的一本 260 页的英文书的情况下,有 14 页发生了这种情况。

例如:input.pdf: 输入.pdf

输出.pdf 输出.pdf

命令:

convert -density 300 -quality 100 input.pdf -level 0%,100%,4.0 -black-threshold 75% convert.pdf && pdfsandwich -noimage -coo "-normalize  -density 300 -black-threshold 75%" convert.pdf -o output.pdf

我怎样才能避免这种输出偏差?

或者,我怎样才能在不丢失 OCR 的情况下校正输出?我发现的所有方法和工具都首先转换为图像格式,这会导致丢失 OCR,然后在这里就没用了。

答案1

谢谢雷米·F,我可以借助这个 LaTeX 文件编写此解决方案,该文件导入 output.pdf 并旋转它:

\documentclass{article} 
\usepackage[paperwidth=6.38in,paperheight=10.32in,bindingoffset=0in,top=-0.39in,bottom=0in,left=-0.29in,right=0in,footskip=0in]{geometry}
\usepackage{graphicx}

\begin{document}

\pagestyle{empty}
\begin{figure}[t]
    \includegraphics[scale=0.233,angle=-4]{output.pdf} 
\end{figure}

\end{document}

然后:

pdflatex output_tex.tex

创建output_tex.pdf: 在此处输入图片描述

如果能够自动调整比例和边距,从而实现流程自动化,那就太好了。

编辑:我在自动获取倾斜角度方面取得了一些进展:

angle=`convert output.pdf -deskew 40 -format "%[deskew:angle]" info:`

如果我实现自动化,则会导致:

#/bin/bash
name=${1%.*}
ext=${1##*.}
convert -density 300 -quality 100 ${name}.$ext -level 0%,100%,4.0 -black-threshold 75%  ${name}_convert.$ext
pdfsandwich -noimage -coo "-normalize  -density 300 -black-threshold 75%" ${name}_convert.$ext -o ${name}_ocr.$ext
angle=`convert ${name}_ocr.$ext -deskew 40 -format "%[deskew:angle]" info:`
angle=`echo "${angle}*-1" | bc`
echo "  angle = $angle"
sed -e "s/ANGLE/$angle/" -e "s/FILE/${name}_ocr.$ext/" /var/ocr/pdfrotate.tex > ${name}_ocr_straight.tex
pdflatex ${name}_ocr_straight.tex
rm ${name}_convert.$ext ${name}_ocr_straight.tex ${name}_ocr_straight.aux ${name}_ocr_straight.log

使用/var/ocr/pdfrotate.tex:

\documentclass{article}
\usepackage[paperwidth=6.38in,paperheight=10.32in,bindingoffset=0in,top=-0.39in,bottom=0in,left=-0.29in,right=0in,footskip=0in]{geometry}
    \usepackage{graphicx}
    \begin{document}
    \pagestyle{empty}
    \begin{figure}[t]
        \includegraphics[scale=0.233,angle=ANGLE]{FILE}
    \end{figure}
    \end{document}

比例看起来正确,并且与文档相关。但不幸的是,我为试用页面调整的几何参数顶部和左侧不适用于其他页面。我不知道如何自动化它们。可能通过模糊原始页面和结果页面,并对它们的相关性进行优化,以顶部和左侧为参数。

答案2

我也遇到了这个问题,它与 pdfsandwich 运行的命令之一有关:unpaper。depaper 中的去倾斜算法有问题。你可以传递参数通过 -unpo 开关,例如,-unpo "-dv 0"这应该禁用倾斜校正。如果您的页面已经清晰且准备好进行 OCR,您可以使用以下方法完全禁用所有预处理-noprepro

相关内容