2016-10-02 40 views
3

我不明白類型轉換。我知道這是不對的,我得到的只是一堆象形文字。用golang從PDF中提取單詞?

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

我想用串工作....

回答

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

@樂東Thuc:請參閱[如何從PDF中提取純文本在golang](https://stackoverflow.com/questions/44560265/how- to-extract-plain-text-from-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) 
}