You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Automator快速操作shell脚本实现despeck去水印及OCR功能

Despeck 批量处理Automator Shell脚本修复方案

原脚本错误原因

  • 循环变量声明为f,但代码中全程调用未定义的$FILE变量,参数为空导致执行时报“参数过多”错误
  • 后缀名提取逻辑语法错误,无法正确识别文件扩展名
  • 输出文件名拼接逻辑错误,会生成无效的命名格式

可用功能脚本

基础配置说明

Automator快速操作中,Shell选择/bin/bash,传递输入选择「作为自变量」即可使用以下脚本。


1. 批量去水印脚本

source ~/.bash_profile
for f in "$@"
do
  # 跳过目录,只处理文件
  if [ -f "$f" ]; then
    echo "Removing Watermark: $f"
    # 提取文件扩展名
    EXT="${f##*.}"
    # 提取无后缀的文件名路径
    FILENAME_NO_EXT="${f%.*}"
    # 输出文件命名规则:原文件名_no_watermark.后缀
    despeck remove "$f" -o "${FILENAME_NO_EXT}_no_watermark.${EXT}"
  fi
done

2. 批量OCR识别脚本

source ~/.bash_profile
for f in "$@"
do
  if [ -f "$f" ]; then
    echo "Running OCR: $f"
    EXT="${f##*.}"
    FILENAME_NO_EXT="${f%.*}"
    # 输出OCR后的可检索PDF/图片
    despeck ocr "$f" -o "${FILENAME_NO_EXT}_ocr.${EXT}"
  fi
done

3. 批量PDF文本提取脚本

source ~/.bash_profile
for f in "$@"
do
  if [ -f "$f" ] && [ "${f##*.}" = "pdf" ]; then
    echo "Extracting PDF Text: $f"
    FILENAME_NO_EXT="${f%.*}"
    # 输出txt格式文本文件
    despeck extract "$f" -o "${FILENAME_NO_EXT}_text.txt"
  fi
done

合并功能脚本(单脚本一次完成三个操作)

如果需要单脚本一次性完成去水印+OCR+文本提取(仅对PDF生效),可以使用以下整合版本:

source ~/.bash_profile
for f in "$@"
do
  if [ ! -f "$f" ]; then
    continue
  fi
  EXT="${f##*.}"
  FILENAME_NO_EXT="${f%.*}"
  
  # 通用去水印
  despeck remove "$f" -o "${FILENAME_NO_EXT}_no_watermark.${EXT}"
  # 通用OCR
  despeck ocr "${FILENAME_NO_EXT}_no_watermark.${EXT}" -o "${FILENAME_NO_EXT}_processed.${EXT}"
  
  # 仅PDF额外提取文本
  if [ "$EXT" = "pdf" ]; then
    despeck extract "${FILENAME_NO_EXT}_processed.pdf" -o "${FILENAME_NO_EXT}_text.txt"
  fi
done

内容的提问来源于stack exchange,提问作者Husnain Sajid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:24:02