我有一个包含一些表格数据的PDF文件。
http://dl.dropbox.com/u/44235928/sample_rotate-0.pdf
我必须从中提取表格数据。我试过以下但没有成功:
OCR解决方案虽然不是很准确(约80%的单词匹配)。
我尝试更改从PDF创建的图像的密度和几何图形,以便从tesseract OCR获得更好的结果。
convert -rotate 90 -geometry 10000 -depth 8 -density 800 sample.pdf img_800_10000.tif;
tesseract img_800_10000.tif img_800_10000.tif nobatch letters;
我不确定哪种图像(密度,几何形状,单色,锐化边界等)最适合OCR。
请建议从PDF文件生成图像的最佳参数(密度,几何形状,深度等),以便提高测量精度。
我也对其他(非ocr)解决方案持开放态度。
答案 0 :(得分:4)
在这种情况下,我建议不使用ImageMagick作为PDF - > TIFF转换。相反,使用Ghostscript。有两个原因:
直接使用Ghostscript可以让您更好地控制转换的各个参数。
ImageMagick本身无法进行特定的转换 - 无论如何它会将Ghostscript称为'delegate',但不会允许您提供与您自己相同的细粒度控制Ghostscript命令会给你。
示例PDF表格中的大多数文字都非常小(我猜,只有4或5 pt高)。这使得运行成功的OCR变得相当困难,除非您大幅提高分辨率。
Ghostscript默认使用-r72
进行图像格式输出(例如TIFF)。 Tesseract在r = 300或r = 400时效果最佳 - 但仅适用于10-12 pt或更高的字体大小。因此,为了补偿小文本大小,你应该在将PDF渲染到图像时使用至少1200 DPI的分辨率制作Ghostscript。
此外,您必须旋转图像,以便文本以正常阅读方向显示(而不是底部 - >顶部)。
这是我先尝试的命令:
gs \
-o sample.tif \
-sDEVICE=tiffg4 \
-r1200 \
-dAutoRotatePages=/PageByPage \
sample_rotate-0.pdf
您可能需要使用-r1200
参数的变体(更高或更低)来获得最佳效果。
答案 1 :(得分:1)
由于评论询问“如何在convert
中使用Ghostscript时定义图像的几何图形?”,这是一个答案:
为Ghostscript同时创建的光栅图像定义几何(即图像尺寸)和分辨率是没有意义的。
将给定维度(如PDF)的基于 vector 的页面转换为栅格图像(例如TIFF G4格式)后,期望的分辨率(如在另一个答案中所做的那样),你已经间接地和隐含地也设置了维度:
1008x612
分。-r72
),图像尺寸将为1008x612
像素。-r720
),图像尺寸为10080x6120
像素。-r1440
),图像尺寸为20160x12240
像素。-r1200
),图像尺寸为16800x10200
像素。-r1000
)时,图像尺寸为14000x8500
像素。-r120
),图像尺寸为1680x1020
像素。-r100
)时,图像尺寸为1400x850
像素。如果您绝对坚持在Ghostscript命令行上指定输出图像的尺寸/几何(而不是分辨率),可以通过在命令行中添加-gNNNNxMMMM -dPDFFitPage
来实现。
答案 2 :(得分:0)
在那里,您可以找到文件的已解码内容:https://docs.google.com/open?id=0B1YEM-11PerqSHpnb1RQcnJ4cFk
绝对确定OCR是阅读pdf文件的最佳方式,但您可以尝试REGEX更改本机内容。这将是艰难而漫长的道路。