Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pdf2txt的输出中是什么(cid:51)?_Python_Xml_Pdf Parsing - Fatal编程技术网

Python pdf2txt的输出中是什么(cid:51)?

Python pdf2txt的输出中是什么(cid:51)?,python,xml,pdf-parsing,Python,Xml,Pdf Parsing,所以我试图从pdf文件中提取文本,我需要它的位置、宽度、高度和字体 我尝试了很多,但最有用和最完整的解决方案似乎是,在这种情况下,更确切地说 我遵循文档和示例,尝试使用以下命令从我的pdf中提取文本了解更多信息: pdf2txt.py -Y normal -t xml -o buttons.xml buttons.pdf 输出buttons.xml如下所示: <?xml version="1.0" encoding="utf-8" ?> <pages>

所以我试图从pdf文件中提取文本,我需要它的位置、宽度、高度和字体

我尝试了很多,但最有用和最完整的解决方案似乎是,在这种情况下,更确切地说

我遵循文档和示例,尝试使用以下命令从我的pdf中提取文本
了解更多信息

pdf2txt.py -Y normal -t xml -o buttons.xml buttons.pdf
输出
buttons.xml
如下所示:

<?xml version="1.0" encoding="utf-8" ?>
  <pages>
      <page id="1" bbox="0.000,0.000,799.900,449.944" rotate="0">
      <textbox id="0" bbox="164.979,213.240,247.680,235.944">
          <textline bbox="164.979,213.240,247.680,235.944">
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="164.979,213.240,178.978,235.944" size="22.704">(cid:51)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="173.280,213.240,187.278,235.944" size="22.704">(cid:76)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="181.315,213.240,195.313,235.944" size="22.704">(cid:72)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="189.350,213.240,203.348,235.944" size="22.704">(cid:89)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="194.795,213.240,208.793,235.944" size="22.704">(cid:85)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="203.096,213.240,217.094,235.944" size="22.704">(cid:3)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="206.987,213.240,220.986,235.944" size="22.704">(cid:52)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="219.684,213.240,233.682,235.944" size="22.704">(cid:86)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="228.237,213.240,242.235,235.944" size="22.704">(cid:89)</text>
              <text font="KZNUUP+HelveticaNeue-Bold" bbox="233.682,213.240,247.680,235.944" size="22.704">(cid:76)</text>
              <text></text>
          </textline>
          </textbox>
          <textgroup bbox="164.979,213.240,419.659,235.944">
              <textbox id="0" bbox="164.979,213.240,247.680,235.944" />
          </textgroup>
      </page>
  </pages>
但是,
assert
失败并触发事件
PDFUnicodeNotDefined
,该事件被捕获并调用:

def handle_undefined_char(self, font, cid):
    if self.debug:
        print >>sys.stderr, 'undefined: %r, %r' % (font, cid)
    return '(cid:%d)' % cid
这就是我如何以一个包含所有这些内容的文件结束(cid:%d)


我对python相当陌生,我试图找出一种识别这些字符的方法,它应该是一个no?有人知道吗?

要理解如何解释cid,您需要了解两件事:

  • 有关字体的注册表订购补充(ROS)信息。它通常类似于“Adobe-Japan1-5”,是存储在字体中的信息属性。ROS决定如何解释CID

  • 使用ROS信息,选择一个兼容的CMap并解码。您可以在以下位置找到Adobe定义的ROSE的CMap文件:

  • 关于发明人直接提供的CID和CMAP的更多信息,请访问


    查看更多信息

    我发布在github repo上,但仍然没有答案…这是我创建的一个repo,可以轻松地从pdf ans psd文件(图像和文本转换为json)中提取内容,但是我的问题仍然没有解决。只是想知道sourceforge上是否不再提供.ROS信息,您可以在github上找到它-
    def handle_undefined_char(self, font, cid):
        if self.debug:
            print >>sys.stderr, 'undefined: %r, %r' % (font, cid)
        return '(cid:%d)' % cid