【问题标题】:OCRing pdfs with pages that contain both text and images对包含文本和图像的页面的 pdf 进行 OCR
【发布时间】:2019-07-08 11:50:30
【问题描述】:

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

【问题讨论】:

    标签: ubuntu pdf ocr


    【解决方案1】:

    因为我的一些 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 行来光栅化并重新识别它。不是最理想的解决方案,但看起来命令 --skip-text 不适合我:

    ocrmypdf --skip-text 在任何页面上跳过 OCR 和其他处理 包含文本。文本页面将被复制到输出 PDF 无需修改。

    https://ocrmypdf.readthedocs.io/en/latest/errors.html

    如果有人有更好的答案,我很乐意听到。

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2018-06-20
      • 1970-01-01
      • 2012-09-06
      • 2018-07-18
      相关资源
      最近更新 更多