运行 ImageMagick 将低质量 pdf 转换为图像(用于 OCR)的最佳参数是什么

2023-12-27

我有几个低质量的 pdf 文件。我想使用 OCR——更准确地说Ocropus http://code.google.com/p/ocropus/从他们那里获取文本。要使用,我首先使用图像魔术师 http://www.imagemagick.org/script/command-line-options.php-- 将 pdf 转换为图像的命令行工具 -- 将这些 pdf 转换为 jpg 或 png。

然而 ImageMagick 生成的图像质量非常低,Ocropus 几乎无法识别任何东西。我想了解处理低质量 pdf 的最佳参数是什么,以便为 OCR 提供尽可能好的质量图像。

我已经发现这一页 http://www.imagemagick.org/script/command-line-options.php,但我不知道从哪里开始。


您可以通过输入了解 ImageMagick“代表”(IM 使用的外部程序,例如 Ghostscript)的详细设置

convert -list delegate

(在我的系统上,这是 32 个不同命令的列表。)现在要查看哪些命令用于转换为 PNG,请使用以下命令:

convert -list delegate | findstr /i png

好的,这是针对 Windows 的。你没有说你使用哪个操作系统。[*]如果您使用的是 Linux,请尝试以下操作:

convert -list delegate | grep -i png

您会发现 IM 确实仅从 PS 或 EPS 输入生成 PNG。那么 IM 如何从您的 PDF 中获取 (E)PS 呢?简单的:

convert -list delegate | findstr /i PDF
convert -list delegate | grep -i PDF

啊!它使用 Ghostscript 进行 PDF => PS 转换,然后再次使用 Ghostscript 进行 PS => PNG 转换。有效,但不是最有效的方法如果您知道 Ghostscript 可以在中执行 PDF => PNGone去。而且更快。而且质量要好得多。

关于 IM 通过 Ghostscript 委托处理 PDF 转换为图像的过程,您首先应该了解两件事:

  1. 默认情况下,如果您不提供额外的参数,Ghostscript 将输出分辨率为 72dpi 的图像。这就是为什么卡尔的回答建议添加-density 600它告诉 Ghostscript 使用 600 dpi 分辨率进行图像输出。
  2. The detour of IM to call Ghostscript twice to convert first PDF => PS and then PS => PNG is a real blunder. Because you never win and harldy keep quality in the first step, but very often loose some. Reasons:
    • PDF 可以处理透明胶片,而 PostScript 则不能。
    • PDF 可以嵌入 TrueType 字体,而 Ghostscript 则不能。等页。 方向转换PS => PDF并不是那么重要......)

这就是为什么我建议您直接使用 Ghostscript 将 PDF 一次性转换为 PNG(或 JPEG)。并使用最新版本8.71 http://www.ghostscript.com/releases/(即将发布:9.01)Ghostscript!以下是命令示例:

gswin32c.exe ^
  -sDEVICE=pngalpha ^
  -o output/page_%03d.png ^
  -r600 ^
  d:/path/to/your/input.pdf

(这是 Windows 的命令行。在 Linux 上,使用gs代替gswin32c.exe, and \代替^.) 该命令期望找到一个output子目录将为每个 PDF 页面存储一个单独的文件。要生成高质量的 JPEG,请尝试

gs \
  -sDEVICE=jpeg \
  -o output/page_%03d.jpeg \
  -r600 \
  -dJPEGQ=95 \
  /path/to/your/input.pdf

(Linux 命令版本)。这种直接转换避免了中间的 PostScript 格式,这种格式可能会丢失原始 PDF 文件中的 TrueType 字体和透明度对象信息。


[*]噢!我一开始就错过了看到你的“linux”标签......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 ImageMagick 将低质量 pdf 转换为图像(用于 OCR)的最佳参数是什么 的相关文章

  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 在 Node.js 中生成带条形码的 pdf

    我在用https github com devongovett pdfkit https github com devongovett pdfkit生成 PDF 文件 我可以简单地使用类似的方法 app get get pdf req re
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • Linux下单个目录下文件过多会怎样?

    如果一个目录中有大约 1 000 000 个单独的文件 大部分大小为 100k 其中没有其他目录和文件 是否会以任何其他可能的方式降低效率或产生缺点 ARG MAX 会对此提出异议 例如 rm rf 在目录中时 会说 参数太多 想要执行某种
  • 如何使用itext7缩放固定矩形内的文本?

    我正在尝试使用 c 中的 itext7 制作一个 pdf 文档 该文档应该具有包含不同文本的固定矩形 这些文本应该在 不可见 矩形的边界内缩放 我试图寻找是否有自动缩放功能 但到目前为止只发现表单域的自动缩放功能 由于 pdf 将用于绘制文
  • Linux >2.6.33:可以使用 sendfile() 来实现更快的“猫”吗?

    必须将大量大文件连接成一个更大的单个文件 我们目前使用 cat file1 file2 output file but are wondering whether it could be done faster than with that
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • 如何将 Emgu.Cv.Image 转换为 System.Image

    我是 Emgu Cv 的新手 我想知道是否有人可以让我知道如何将 Emgu Cv Image 更改为 System Image 如果需要进一步解释 请告诉我 我会这样做 我的语言我使用的是C 你可以只使用ToImage 方法得到一个Syst
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • BeagleBone Black 如何用作大容量存储设备?

    是否可以使用 BB 作为大容量存储设备 我希望将其连接到可以从 USB 连接 例如 USB 闪存驱动器 读取文件的音频播放器并充当包含一个特定文件夹的数据存储设备 及其子文件夹 从文件系统 如果可能 在连接到开发板的闪存驱动器上 正如设备规
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 用于 e NetworkManager VPN 连接的 dbus 信号处理程序

    我需要开发一些在建立 VPN 连接时执行的 python 代码 VPN 由 NetworkManager 控制 我试图弄清楚如何为此使用 NM DBUS 事件 使用 dbus monitor system 我能够识别连接信号 signal
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio

随机推荐

  • 为什么这个依赖类型不被视为使用模板参数的专业化?

    我试图将专业化分组在一起以避免多次编写它们 例如 在下面的代码中 我尝试将 float 和 double 专门化作为 foo func 的实现的一种情况 然后我使用 bool 的另一个实现 template
  • 在 Flex 4 中使用 HTTPS Web 服务

    我正在尝试在 Adob e Flash Builder 中使用一项 HTTPS Web 服务 当我添加 URL 时 出现此错误 服务期间出现错误 内省 WSDL异常 故障代码 OTHER ERROR 无法 解析导入的文档 https 172
  • 蟒蛇 |如何使用 Tkinter 进行快速反应测试?

    我尝试使用 Python 中的 Tkinter 模块制作一个快速反应测试器 但是当我单击Start按钮 它只是冻结窗口 我不知道如何恢复 这是我的代码 import webbrowser as wb import time import m
  • 使用 SQL 关键字作为列的别名

    我正在执行以下查询 但它给出语法错误 因为关键字key已在 SQL 中注册 SELECT id AS key country name AS value FROM countries 我也尝试过使用这样的括号 但它不起作用 SELECT i
  • 使用 Gradle 访问私有 Maven Github 包注册表

    我在用户下有一个私人存储库X和存储库名称Y https github com X Y https github com X Y 这是一个使用 Gradle 构建的 Java 项目 Gradle配置文件已经按照官方说明进行配置Github 包
  • 更改视角会导致弹出错误,调试视角不再起作用

    刚刚安装了 Eclipse Juno 从那时起就遇到了透视问题 除了编辑器窗口非常小并且仅限于显示的一个角落 在调试中 在 Java 透视图中没问题 之外 我在更改透视图时也会遇到错误 建议 如果我不能解决这个问题 我就会回到 Indigo
  • 如何在 ipython 笔记本中启用换行

    我一直在尝试在 ipython 笔记本中启用换行 我用谷歌搜索没有结果 然后我在终端中输入了 ipython notebook help 这为我提供了大量配置文件的配置命令 但没有换行 有谁知道 ipnotebook 是否有此功能 如果有如
  • 使用 os_unfair_lock_lock 进行快速访问竞争

    我制作了一个自定义属性包装器 它提供了一种使用互斥上下文访问数据的方法os unfair lock 在启用 TSAN 的情况下测试我的包装器后 在使用以下命令获取锁时报告了访问争用错误os unfair lock lock 如下图所示 不知
  • 如何配置每个 pod/进程使用不同的 kafka 主题分区

    我有一个有 5 个分区的 kafka 主题 我当前有 5 个 pod 正在使用这 5 个分区 但是 由于特定需求 我需要每个 Pod 仅从其分配的分区中进行消费 但由于 pod 在 kubernetes 上都具有相同的配置 我无法告诉每个
  • 组件和子组件

    我是 Vue js 新手 在使用带有子组件的组件时遇到了一些问题 我有以下内容 vue files app vue
  • 如何在 ActiveAdmin 视图中使用在控制器中定义的实例变量?

    我有这个 ActiveAdmin register User do controller do def show user User find params id show end end show do attributes table
  • 无法通过cmd运行C程序

    大家好 我正在学习 C 正在尝试弄清楚如何通过命令控制台 cmd 运行它 我已经安装了 eclipse 和 Mingw 并将它们添加到路径中 C MinGW bin C MinGW msys 1 0 bin 我在 notepad 上编写了这
  • 使用单个 Helm Chart 部署多个服务

    我是 helm 和 kubernetes 的新手 我当前的要求是使用通用舵图设置多个服务 这是场景 我有一个适用于所有服务的通用 docker 映像 对于每个服务 都需要运行不同的命令 总共有40多项服务 Example pipenv ru
  • 如何在 Visual Studio 中查找特定类的重载运算符的所有引用?

    如果我有一个包含重载 运算符函数的类 我如何找出整个代码中使用该重载运算符的位置 除了在重载的 方法中放置一个断点并查看代码是否命中它之外 我尝试转到 Visual Studio 中的类视图 右键单击该方法 然后选择 查找所有引用 但它声称
  • 在Excel中连接多个匹配项

    请看下面 我想将表 2 中的 注释 连接到表 1 中 如一系列图像所示 而不使用 TEXTJOIN 或宏 仅使用常规 Excel 函数 不使用 UDF 或辅助列就没有简单的解决方案 我建议使用 UDF 公式 它很容易在工作表中实现和使用 要
  • Vba 从互联网下载文件 WinHttpReq 登录不起作用

    我一直在寻找一种解决方案来自动从网站下载 csv 表 但我还没有找到可行的解决方案 如果我使用 IE 或 Chrome 在上次登录后输入网址 文件会自动开始下载 为此 我有另一种方法通过 IE 和 HTML 对象通过导航然后保存来实现我所需
  • 如何使 C-p 成为 Devel::PerlySense 的 Emacs 前缀键?

    我刚刚安装开发 PerlySense http search cpan org dist Devel PerlySense 0 0180 我已将以下内容放入我的 emacs 文件中 PerlySense load perly sense g
  • 滑动菜单 - 从右到左

    我正在尝试使用下面示例中的滑动菜单 https github com eddieringle android undergarment https github com eddieringle android undergarment 但这
  • SCons:获取原始文件的绝对路径(就好像我没有设置variant_dir一样)

    我可以用File foo bar abspath获取文件的位置 但如果我设置了variant dir 则返回的路径将位于variant dir而不是原始位置 如果我有duplicate 0设置 那么返回的文件实际上并不存在 显然 SCons
  • 运行 ImageMagick 将低质量 pdf 转换为图像(用于 OCR)的最佳参数是什么

    我有几个低质量的 pdf 文件 我想使用 OCR 更准确地说Ocropus http code google com p ocropus 从他们那里获取文本 要使用 我首先使用图像魔术师 http www imagemagick org s