2016-10-02 10 views
3

タイプ変換は分かりません。私はこれが正しいのではないことを知っています、私が得るのは、象徴の束です。私は文字列で仕事をしたいgolangでPDFから単語を抽出しますか?

f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)

....

答えて

4

私が得るすべては、象形文字の束です。

あなたが得るのは、クリアテキストではないpdfファイルの内容です。

GoでPDFファイルを読む場合はone of the golang pdf librariesrsc.io/pdfthose librariesのいずれかをyob/pdfreaderとしてください。 mentioned hereとして

私はもののこの種のいずれかの「固体フレームワーク」はあり疑います。 PDF形式は、設計上、機械に優しいものではありません。また、AFAIKでは、任意のPDFを確実に解析する方法はありません。

2

PDFにはテキストだけでなく、書式(フォント、パディング、余白、位置、図形、イメージ)の情報も含まれているからです。

フォーマットなしでプレーンテキストを読む必要がある場合。私はリポジトリをフォークし、それを行うための関数を実装しています。あなたはそれをチェックすることができますhttps://github.com/ledongthuc/pdf

私はまた、あなたのために役立つ例を入れている。

package main 

import (
    "bytes" 
    "fmt" 

    "github.com/ledongthuc/pdf" 
) 

func main() { 
    content, err := readPdf("test.pdf") // Read local pdf file 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(content) 
    return 
} 

func readPdf(path string) (string, error) { 
    r, err := pdf.Open(path) 
    if err != nil { 
     return "", err 
    } 
    totalPage := r.NumPage() 

    var textBuilder bytes.Buffer 
    for pageIndex := 1; pageIndex <= totalPage; pageIndex++ { 
     p := r.Page(pageIndex) 
     if p.V.IsNull() { 
      continue 
     } 
     textBuilder.WriteString(p.GetPlainText("\n")) 
    } 
    return textBuilder.String(), nil 
} 
+1

私はあなたのlibのバグを持っているが、それは 'ledongthuc/pdf' Gitの上で問題を投稿することができことはできません。 – LeMoussel

+0

@LeMoussel、なぜ私のプロジェクトで問題を作成できないのか分かりません。しかし、とにかく、あなたはここにバグを送るように頼むことができます、私はあなたを助けようとします –

+0

@ Le Dong Thuc:[ゴランのPDFからプレーンテキストを取り出す方法](https://stackoverflow.com/questions/44560265/how- pdf-in-golang) – LeMoussel

1

私はいくつかの行くpdfライブラリを試してみました、と私は期待のようなsajari/docconv作品を発見しました。ここ

使いやすいが、一例である:

package main 

import (
    "fmt" 
    "log" 

    "github.com/sajari/docconv" 
) 

func main() { 
    res, err := docconv.ConvertPath("your-file.pdf") 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(res) 
} 
関連する問題