如何在Golang中从PDF中提取纯文本

4

我希望使用GO从pdf文件中提取文本。 我尝试使用ledongthuc/pdf Go包来实现GetPlainText()方法获取无格式的纯文本内容。 但是我没有得到纯文本。 我得到了以下结果:

 W
 S
 D
 V
 Y R
 O
 R
 Q
 W
 D
 L
 U
 H
 P
 H
 Q
 W
......

Go 代码

package main

import (
    "bytes"
    "fmt"

    "github.com/ledongthuc/pdf"
)

func main() {
    content, err := readPdf("test.pdf")
    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
}

2
我已经尝试了几个PDF文件,库可以为一个文件返回纯文本,但对于另一个文件则不能(只有一些垃圾字符和少量实际文本)。最好与开发人员联系。 - jeevatkm
似乎Go的方式还没有到位。也许你应该尝试从Go调用另一个库?(Apache Tika效果不错) - Kiril
1个回答

2
您可以使用“示例PDF文档”这样的消息,而不是原始信息。
Ex
a
m
pl
e

of

a

pd
f

doc
u
m
e
nt
.

您需要做的是将textBuilder.WriteString(p.GetPlainText("\n"))更改为textBuilder.WriteString(p.GetPlainText(""))。希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接