使用golang从PDF中提取单词?

ca1c2owp  于 2023-06-03  发布在  Go
关注(0)|答案(4)|浏览(189)

我不懂类型转换。我知道这不对,我得到的只是一堆象形文字。
f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)
我想和弦一起工作…

iugsix8n

iugsix8n1#

我尝试了一些go 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)
}
ntjbwcob

ntjbwcob2#

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

iaqfqrcu3#

我得到的只是一堆象形文字
你得到的是一个pdf文件的内容,不是明文。
如果你想在Go中读取一个pdf文件,使用one of the golang pdf libraries,比如rsc.io/pdf,或者使用those libraries,比如yob/pdfreader
mentioned here
我怀疑这种东西是否有任何“坚实的框架”。PDF格式在设计上并不意味着是机器友好的,而且AFAIK没有保证的方法来解析任意的PDF。

2w3kk1z5

2w3kk1z54#

你可以尝试将pdf2go lib与流行的:pdf2go

相关问题