对包含文本和图像的页面进行OCRing PDF

时间:2019-07-08 11:50:30

标签: ubuntu pdf ocr

我有以下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

1 个答案:

答案 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

尽管有人能提供更好的答案,但我很高兴听到它。