用golang从PDF中提取单词?

omg*_*mgj 4 pdf text-analysis go

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

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

我想用字符串....

Le *_*huc 7

这是因为 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
}
Run Code Online (Sandbox Code Playgroud)

  • 我的库有一个错误,但不可能在 `ledongthuc/pdf` Git 上发布问题。 (3认同)
  • @LeDongThuc使用你的库,我收到以下错误:格式错误的PDF:在偏移量0处读取:流不存在 (2认同)

Von*_*onC 5

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

你得到的是一个pdf文件的内容,它不是明文。

如果你想读在Go的PDF文件时,使用的golang PDF库之一喜欢rsc.io/pdf,或一个这些库一样yob/pdfreader

正如这里提到的

我怀疑这种东西是否有任何“可靠的框架”。PDF 格式在设计上并不意味着对机器友好,而且 AFAIK 没有保证可以解析任意 PDF 的方法。


Dao*_*tor 5

我尝试了一些pdf库,发现sajari/docconv的工作方式和我期望的一样.

易于使用,这是一个例子:

package main

import (
    "fmt"
    "log"

    "code.sajari.com/docconv"
)

func main() {
    res, err := docconv.ConvertPath("your-file.pdf")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(res)
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,docconv 包具有仅适用于 Linux 的依赖项 (6认同)