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