我有以下ubuntu脚本,该脚本检查我的pdf是否为OCRed,然后对它们进行OCR(如果没有)。问题是,我有一些包含OCR和非OCR的pdf文件。因此,我想在if语句中添加一个条件,该条件表示行数或单词数是否小于某个数字(例如100行文本或1000个单词),以对其进行OCR。我对ubuntu完全陌生,并且添加了几行(粗体)。
MYFONTS=$(pdffonts -l 5 "$1" | tail -n +3 | cut -d' ' -f1 | sort | uniq)
**LINECOUNT=$(wc -l)**
if [ "$MYFONTS" = '' ] || [ "$MYFONTS" = '[none]' ] **|| [ "$LINECOUNT" < '100' ]**; then
echo "Not yet OCR'ed: $1 -------- Processing...."
echo " "
ocrmypdf -l eng -s "$1" "$1"
echo " "
else
echo "Already OCR'ed: $1"
echo " "
fi
脚本是从这里获得的: Batch OCRing PDFs that haven't already been OCR'd
答案 0 :(得分:0)
因为我的一些pdf包含带有文字和扫描图像的页面,所以我运行了上面的脚本来处理任何仅图像pdf。然后,我像这样修改了脚本并运行它以清除所有有问题的pdf:
LINECOUNT=$(wc -l "$1" | awk '{ print $1 }')
if [ "$LINECOUNT" -lt 500 ]; then
echo "Not yet OCR'ed: $1 -------- Processing...."
echo " "
ocrmypdf --force-ocr -k --oversample 600 "$1" "$1"
echo " "
else
echo "Already OCR'ed: $1"
echo " "
fi
基本上说文件是否少于500行以光栅化并重新ocr。这不是最理想的解决方案,但是命令--skip-text
似乎对我不起作用:
ocrmypdf-跳过文本可跳过任何页面上的OCR和其他处理 包含文字。文本页面将被复制到输出PDF中 无需修改。
https://ocrmypdf.readthedocs.io/en/latest/errors.html
尽管有人能提供更好的答案,但我很高兴听到它。