【问题标题】:How can I identify unfilled ovals in a PDF document using CAM::PDF? [closed]如何使用 CAM::PDF 识别 PDF 文档中未填充的椭圆? [关闭]
【发布时间】:2010-12-08 00:01:53
【问题描述】:

我需要识别 PDF 文件中未填充的椭圆。之后,我应该用颜色填充它们,并且我需要带有页码的椭圆坐标。谁能帮助我如何使用CAM::PDF 解决这个问题?

【问题讨论】:

  • 你有任何代码吗?你尝试了什么?你遇到了什么问题?
  • 您应该一次采取这一步骤。您是否设法检测到所有椭圆?成功后,看看你是否能找出它们是什么颜色。我认为这很棘手。
  • 即使在最好的情况下,您所要求的也是相当复杂和困难的。请提供更多信息。

标签: perl pdf detection shapes


【解决方案1】:

$doc->traverse($dereference, $node, $callbackfunc, $callbackdata) 看起来很有前途。检查并查看椭圆的类型。

【讨论】:

    【解决方案2】:

    看着PDF Specs,我会说你面前有相当大的挑战:

    PDF 提供五种图形对象:

    • 路径对象是由直线、矩形和三次贝塞尔曲线组成的任意形状。路径可能与自身相交,并且可能具有断开的部分和孔。路径对象以一个或多个绘制操作符结束,这些操作符指定路径是否应被描边、填充、用作剪切边界或这些操作的某种组合。

    • 一个文本对象 ...

    • 外部对象 (XObject) 是在内容流之外定义并作为命名资源引用的对象(参见第 7.8.3 节,“资源字典”)。 XObject 的解释取决于它的类型。 ...

    • 内嵌图像对象使用特殊语法在内容流中直接表达小图像的数据。

    • 着色对象描述几何形状,其颜色是形状内位置的任意函数。

    因此,至少需要知道您感兴趣的椭圆是路径还是外部对象,还是内联图像对象或阴影对象。

    然后,您需要一个适当的算法来确定该类型的对象是否为椭圆形。然后,您需要弄清楚 unfilled 是什么意思。然后,您需要弄清楚如何填充它们。

    在我看来,没有人会付出那么多努力来为您提供现成的解决方案。

    【讨论】:

      【解决方案3】:

      实际上,将 PDF 渲染为灰度位图并使用简单的形状识别来确定填充的椭圆和未填充的椭圆实际上可能更简单。如果您可以可靠地确定椭圆的位置(我假设这来自一个表格,所以椭圆的位置将是标准的),您可以做一个简单的启发式(例如,如果 70% 的像素是 50 % gray 或更高)来确定它是什么类型的椭圆。

      例如在这种情况下:

      [ ]        [ ]         [ ]       [X]
      
      [ ]        [X]         [ ]       [ ]
      
      [ ]        [ ]         [X]       [ ]
      

      您可以使用网格分割椭圆:

      [ ]   |    [ ]    |    [ ]   |   [X]
      ------+-----------+----------+------
      [ ]   |    [X]    |    [ ]   |   [ ]
      ------+-----------+----------+------
      [ ]   |    [ ]    |    [X]   |   [ ]
      

      然后从那里你只需遍历网格,将简单的启发式应用到每个单元格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-13
        • 1970-01-01
        相关资源
        最近更新 更多