我有几个质量很差的pdf文件,想使用OCR技术——更确切地说是 Ocropus,从中获取文本。为此,我首先使用命令行工具ImageMagick将这些pdf转换成jpg或png格式的图像。
然而,ImageMagick生成的图像质量非常低,而Ocropus几乎无法识别任何内容。我想了解处理低质量pdf以提供尽可能好的图像给OCR所需的最佳参数。
我找到了这个页面,但不知道从哪里开始。
然而,ImageMagick生成的图像质量非常低,而Ocropus几乎无法识别任何内容。我想了解处理低质量pdf以提供尽可能好的图像给OCR所需的最佳参数。
我找到了这个页面,但不知道从哪里开始。
您可以通过输入命令来了解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
-density 600
,这告诉Ghostscript在其图像输出中使用600dpi的分辨率。PS => PDF
的转换并不那么重要....)因此,我建议您使用Ghostscript直接将PDF一次性转换为PNG(或JPEG)。并且使用最新版本8.71(即将发布:9.01)的Ghostscript!以下是示例命令:
gswin32c.exe ^
-sDEVICE=pngalpha ^
-o output/page_%03d.png ^
-r600 ^
d:/path/to/your/input.pdf
(这是Windows的命令行。在Linux上,请使用gs
而不是gswin32c.exe
,并使用\
而不是^
。)此命令期望找到一个名为output
的子目录,在其中它将存储每个PDF页面的单独文件。要生成质量良好的JPEG,请尝试
gs \
-sDEVICE=jpeg \
-o output/page_%03d.jpeg \
-r600 \
-dJPEGQ=95 \
/path/to/your/input.pdf
(Linux命令版本)。这种直接转换避免了中间的PostScript格式,该格式可能会丢失原始PDF文件中的TrueType字体和透明对象的信息。
[*] 哎呀!我一开始没看到你的“linux”标签...
-density 600
左右可以满足您的需要。
至少还有两个工具值得考虑:
pdfimages
,它随着poppler-utils
软件包一起提供,可以轻松地从PDF中提取图像而不会降低其质量。pdfsandwich
,只需运行pdfsandwich inputfile.pdf
即可为您提供OCR文件。您可能需要调整选项以获得良好的结果。请参阅官方页面获取更多信息。