15

だから私はpdfファイルからテキストを抽出しようとしています.その位置、幅、高さ、フォントが必要です.

私は多くのことを試しましたが、最も便利で完全なソリューションはPDFMinerであり、この場合、より正確にはpdf2txt.pyです。

ドキュメントと例に従い、次のLearn Moreコマンドを使用して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>

最初の文字は L である必要があり、 ascii テーブルutf-8 テーブルに関して、 51(cid:51)は文のどの文字にも一致しないようです

タイトルが示すように、それは何なのか、そしてこれらをどのように使用するの(cid:51)...だろうか?


編集

そのため、実際の文字を取得する代わりに、プログラムが書き込む (cid:%d) ことがわかりました。これは、それが Unicode 文字列であることを認識していないためです。

最初にこの関数を呼び出して、char を書き込みます。

def render_char(self, matrix, font, fontsize, scaling, rise, cid):
    try:
        text = font.to_unichr(cid)
        assert isinstance(text, unicode), text
    except PDFUnicodeNotDefined:
        text = self.handle_undefined_char(font, cid)

しかし、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にかなり慣れていないので、これらの文字を認識する方法を見つけようとしています.1つでなければなりませんか?誰にもアイデアはありますか?

4

1 に答える 1