用golang从PDF中提取单词?

时间:2016-10-02 04:33:35

标签: pdf go text-analysis

我不懂类型转换。我知道这是不对的,我得到的只是一堆象形文字。

xaml

我想使用字符串......

3 个答案:

答案 0 :(得分:5)

我尝试了一些pdf libs,发现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)
}

答案 1 :(得分:4)

  我得到的只是一堆象形文字。

你得到的是pdf文件的内容,这不是明文。

如果您想在Go中阅读pdf文件,请使用one of the golang pdf libraries之类的rsc.io/pdf,或those libraries之类的yob/pdfreader之一。

作为mentioned here

  

我怀疑这种东西有什么“坚实的框架”。 PDF格式并不意味着设计符合机器友好,AFAIK无法保证解析任意PDF。

答案 2 :(得分:4)

这是因为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
}