我有数千张照片需要扫描。我一直在思考这个过程,觉得这是一项艰巨的任务。我发现的一个痛点是需要将每张照片单独放在玻璃上进行扫描。
我很想知道是否有任何开源软件,能够在扫描多张照片后自动识别单张照片并分别保存它们。
我现在有一台 HP Photosmart 打印机/扫描仪,如果可能的话,我想利用它。
答案1
您正在寻找的软件后处理功能称为图像分割。至少在 Linux 下,到目前为止我还不知道合适的解决方案。(有概念验证片段图像基于 ImageMagick 的脚本 –也可以看看。
当您将照片随意放在扫描仪上时,您需要自动分割和去倾斜,而这两项功能似乎很难通过可用的免费软件实现,并且通常需要手动后期处理。此外,许多扫描仪都具有令人讨厌的特性,即 (0,0) 像素距离玻璃角几毫米,导致在将照片放在边缘时被裁剪。
那么这个怎么样:
建议的替代方案:使用模板扫描,使用 Image Magick 分割
制作一些纸板模板,上面有几张照片的剪纸,放在扫描仪玻璃上。一些提示:
- 将模板放置在扫描仪玻璃上,使其无法移动,如果需要,可以用胶带将其粘在一个边缘上。
- 由于您的照片将具有几种标准尺寸,因此几个模板就足够了。
- 创建模板以最大化照片覆盖范围。这可能意味着将它们旋转 90 度(通过下面的扫描命令自动校正)并组合不同尺寸的照片。
- 照片覆盖的区域应该是矩形的,其中未被照片覆盖的空间尽可能小。因为稍后扫描该空间会浪费时间。
定义要扫描的区域。它应该是包含所有照片的矩形区域。要获取其偏移量和大小,例如使用西尼要创建预览,请选择扫描区域并查找“窗口→显示高级选项”中的值。
批量扫描照片拼贴画。您希望将每张照片拼贴画保存为一个大图像文件,但批量扫描多个这样的拼贴画。对于 Linux,我喜欢
scanimage
有了--batch
此选项,您只需按Enter即可获取并保存下一次扫描。使用scanimage -A
查找设备特定的选项来限制您的扫描区域,并将其设置为上一步确定的值。将照片拼贴图分割成单独的图像。使用 ImageMagick 进行分割,在需要时旋转图像。在 Linux 上,一个小的 shell 脚本可以对使用相同纸板模板扫描的所有图像执行此操作。像这样,处理名为
collage-001.jpg
等的文件collage-002.jpg
:(小心,未经测试!)for file in collage-*.jpg; do convert "$file" \ -crop '1000x1500+0+0' -rotate 90 +write ${file/.jpg/.img1.jpg} \ -crop '1000x1500+1000+0' -rotate 90 +write ${file/.jpg/.img2.jpg} \ null:; done
资料来源:这个答案,其中还提供了针对图像无法装入内存的技术;这个帖子解释null:
;文档-庄稼,-旋转和+写。
另一种选择:XSane 批量扫描。我也尝试过使用西尼的批量扫描功能。它允许每页定义多个扫描区域(参见“窗口 → 显示批量扫描”),包括每个扫描区域的旋转选项。因此,您可以为每个纸板模板创建(甚至保存)一个扫描区域定义集,然后按“扫描批量列表”从模板中获取多张图像。但是,对于大量图像,这会慢得多,因为扫描仪在处理一个扫描区域后会移回零位置。(至少我的扫描仪是这样的。不知道是否有扫描仪的 SANE 功能可以避免这个返回零的步骤,但我对此表示怀疑。)
答案2
许多扫描仪和一体机都具有此功能。我不想提出购买建议,但首先快速搜索一下 Epson、Kodak(仍在营业)和 HP 可能会给你一个方向。通常,你可以将几张照片放在平板上,然后软件会整理出单个图像。有些设备还配有文档进纸器
似乎有几种软件选项,如评论中所述。Photoshop 可让您扫描多张照片,然后分开。这Photoshop 扫描链接更详细地解释了这一点。Photoshop 也是一个很好的工具,可以单独处理图像。Photoshop Elements 似乎具有类似的功能,而且成本更低元素
肯定还有很多其他的解决方案