gpt4 book ai didi

linux - 从带有嵌入字体的 PDF 文件中提取文本

转载 作者:可可西里 更新时间:2023-11-01 11:50:03 26 4
gpt4 key购买 nike

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

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

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

  1. 选择文本并将其粘贴到记事本/Excel 工作表。 (我收到垃圾字符)
  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)解决方案持开放态度。

最佳答案

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

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

  2. ImageMagick 不能自己进行特定的转换——无论如何它都会调用 Ghostscript 作为它的“委托(delegate)”,但不允许您提供与您自己的所有相同的细粒度控制Ghostscript 命令会给你。

样本 PDF 表格中的大部分文本都非常小(我猜只有 4 或 5 磅高)。这使得运行成功的 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 参数的变体(更高或更低)以获得最佳结果。

关于linux - 从带有嵌入字体的 PDF 文件中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com