4

我有一个包含一些表格数据的 PDF 文件。

http://dl.dropbox.com/u/44235928/sample_rotate-0.pdf

我必须从中提取表格数据。我试过以下但没有成功:

  1. 选择文本并将其粘贴到记事本/excel-sheet。(我收到垃圾字符)
  2. 用于从 Acrobat Reader 中另存为文本。它还提供垃圾字符而不是实际文本。
  3. 尝试使用 ApachePDFBox 命令行实用程序从 PDF 中提取文本。它还提供垃圾字符而不是真实文本。
  4. 最后,我正在尝试 OCR 解决方案。我正在使用 ImageMagick 将 pdf 文件转换为 .tif 图像,并让这些图像由 tesseract OCR 处理。

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 文件生成图像的最佳参数(密度、几何形状、深度等),以便提高 tesseract 精度。

我也对其他(非 ocr)解决方案持开放态度。

4

3 回答 3

4

在这种情况下,我建议不要使用 ImageMagick 进行 PDF -> TIFF 转换。相反,请使用 Ghostscript。两个原因:

  1. 直接使用 Ghostscript 可以让您更好地控制转换的各个参数。

  2. ImageMagick 本身无法进行特定的转换——它无论如何都会调用 Ghostscript 作为它的“委托”,但不允许您提供与您自己的 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参数的变化(更高或更低)以获得最佳结果。

于 2012-09-10T08:36:27.893 回答
1

由于有评论询问“在使用 Ghostscript 时如何定义图像的几何形状convert?” ,这是一个答案:

  1. 同时为 Ghostscript 创建的光栅图像定义几何图形(即图像尺寸)和分辨率是没有意义的。

  2. 一旦将给定尺寸的基于矢量的页面(例如 PDF)转换为提供所需分辨率的光栅图像(例如 TIFF G4 格式)(如在另一个答案中所做的那样),您已经间接和隐式地设置了方面:

    • 示例文件sample_rotate-0.pdf的原始 PDF 尺寸是1008x612点。
    • 在 72 DPI 的分辨率下(如果没有直接给出,则默认 Ghostscript 使用,或者-r72如果直接给出,则在 Ghostscript 命令中),图像尺寸将为1008x612像素。
    • 在 720 DPI 的分辨率下(-r720在 Ghostscript 命令中),图像尺寸将为10080x6120像素。
    • 在 1440 DPI 的分辨率下(-r1440在我的另一个答案的 Ghostscript 命令中),图像尺寸将为20160x12240像素。
    • 分辨率为 1200 DPI(-r1200在 Ghostscript 命令中)时,图像尺寸将为16800x10200像素。
    • 在 1000 DPI 的分辨率下(-r1000在 Ghostscript 命令中),图像尺寸将为14000x8500像素。
    • 在 120 DPI 的分辨率下(-r120在 Ghostscript 命令中),图像尺寸将为1680x1020像素。
    • 在 100 DPI 的分辨率下(-r100在 Ghostscript 命令中),图像尺寸将为1400x850像素。
  3. 如果您绝对坚持在 Ghostscript 命令行上指定输出图像的尺寸/几何形状(而不是分辨率),您可以通过添加-gNNNNxMMMM -dPDFFitPage到命令行来做到这一点。

于 2012-09-10T21:43:32.647 回答
0

在那里您可以找到文件的解码内容:https ://docs.google.com/open?id=0B1YEM-11PerqSHpnb1RQcnJ4cFk

绝对确定 OCR 是阅读 pdf 文件的最佳方式,但您可以尝试 REGEX-ing 原生内容。这将是艰难而漫长的道路。

于 2012-09-08T13:10:58.170 回答