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

基于Automator+ImageMagick+Tesseract的报纸微缩胶片批量处理优化求助

解决报纸微缩胶片工作流的四个核心问题

我来帮你一步步搞定这几个实际操作里的痛点,都是能直接落地的方案:

1. 搞定ImageMagick -adjoin和序列命名的冲突问题

你遇到的%02d这类序列转义符没法和-adjoin配合的问题,其实可以跳出ImageMagick本身的限制,用Shell循环分组来实现有序命名,完全不用依赖-set filename:original这种折中方案。

比如你想按每期4页分组,输出ediciones_01.tif、ediciones_02.tif这类有序文件,脚本可以这么写:

# 先定义每期的页数,后面可以改成用户输入
PAGE_PER_ISSUE=4
files=("$@")

# 按每组PAGE_PER_ISSUE个文件循环处理
for ((i=0; i<${#files[@]}; i+=PAGE_PER_ISSUE)); do
    # 提取当前组的文件列表
    current_group=("${files[@]:i:PAGE_PER_ISSUE}")
    # 生成带两位序号的输出文件名
    issue_num=$(printf "%02d" $((i / PAGE_PER_ISSUE + 1)))
    output_file="ediciones_${issue_num}.tif"
    
    # 执行convert命令,彻底避开转义符冲突
    /usr/local/opt/imagemagick@6/bin/convert -format tiff -quality 75 -compress jpeg "${current_group[@]}" -adjoin "$output_file"
done

2. 让脚本自动切换到输入文件的父目录

要切换到输入文件的父目录,只需要取第一个输入文件的路径,提取它的目录部分,然后cd进去即可。在脚本开头加上这两行:

# 获取第一个输入文件的父目录
parent_dir=$(dirname "$1")
# 切换到该目录,失败则终止脚本避免出错
cd "$parent_dir" || exit 1

这样后续生成的合并文件会直接保存在输入文件的原目录里,不用硬编码固定路径,适用性更强。

3. 按指定期数n批量选取文件(替代低效手动选择)

手动挑每组4个文件太费时间,咱们用Automator组合动作实现「用户输入每期页数→自动分组处理」:

  1. 在Automator里添加**「显示输入对话框」**动作,设置提示文本为「请输入每期的页数(比如4)」,默认值填4,把输入内容存为变量(比如命名为PageCount)。
  2. 接着添加**「运行Shell脚本」**动作,设置「传递输入」为「作为参数」,脚本修改为:
# 接收用户输入的每期页数
PAGE_PER_ISSUE="$1"
# 移除第一个参数,剩下的是选中的所有文件
shift
files=("$@")

for ((i=0; i<${#files[@]}; i+=PAGE_PER_ISSUE)); do
    current_group=("${files[@]:i:PAGE_PER_ISSUE}")
    issue_num=$(printf "%02d" $((i / PAGE_PER_ISSUE + 1)))
    output_file="ediciones_${issue_num}.tif"
    
    /usr/local/opt/imagemagick@6/bin/convert -format tiff -quality 75 -compress jpeg "${current_group[@]}" -adjoin "$output_file"
done
  1. 把「显示输入对话框」的输出连接到「运行Shell脚本」的输入,这样用户输入的页数就会作为脚本的第一个参数传入。

之后你只需要选中整个文件夹里的所有TIFF文件,运行这个Automator服务,输入每期页数,就能自动完成分组合并,完全不用手动挑文件。

4. 集成Tesseract生成可搜索PDF和纯文本TXT

在Automator里新增一个工作流(或者接在合并步骤后面),按以下步骤配置:

  1. 添加**「查找访达项目」**动作,设置搜索范围为你存放合并后多页TIFF的文件夹(比如~/Pictures/Microfilms/),搜索条件为「文件扩展名是tif」。
  2. 添加**「运行Shell脚本」**动作,「传递输入」选「作为参数」,脚本写:
for tiff_file in "$@"; do
    # 生成可搜索PDF,输出文件名与TIFF同名,后缀替换为pdf
    # 如果你的报纸是西班牙语,记得加`-l spa`参数提升识别准确率
    tesseract "$tiff_file" "${tiff_file%.tif}" pdf
    # 生成纯文本TXT,输出文件名与TIFF同名,后缀替换为txt
    tesseract "$tiff_file" "${tiff_file%.tif}" txt
done

这样就能批量处理所有合并后的多页TIFF,自动生成对应的可搜索PDF和纯文本文件。


内容的提问来源于stack exchange,提问作者Juan Jullian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:22:46