не понимаю тип изменение. Я знаю, что это неправильно, все, что я получаю, это куча иероглифов.Извлечь слова из PDF с помощью golang?
f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)
Я хочу работать со строками ....
не понимаю тип изменение. Я знаю, что это неправильно, все, что я получаю, это куча иероглифов.Извлечь слова из PDF с помощью golang?
f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)
Я хочу работать со строками ....
все, что я получаю кучу иероглифов.
Что вы получаете, является содержимым pdf-файла, который не является четким текстом.
Если вы хотите, чтобы прочитать файл в формате PDF в Go, используйте one of the golang pdf libraries как rsc.io/pdf
, или один из those libraries как yob/pdfreader
.
Как mentioned here:
Я сомневаюсь, есть ли «твердая основа» для такого рода вещи. Формат PDF не предназначен для машинного дизайна по дизайну, и AFAIK не существует гарантированного способа разбора произвольных PDF-файлов.
Это потому, что 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
}
Я попробовал некоторые идут в формате 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)
}
У меня есть ошибка с вашей библиотеки, но это не возможно, можно опубликовать вопрос на 'ledongthuc/pdf' Git. – LeMoussel
@LeMoussel, не уверен, почему вы не можете создать проблему в моем проекте. Но в любом случае, вы можете попросить отправить ошибку здесь, я постараюсь вам помочь –
@ Le Dong Thuc: см. [Как извлечь простой текст из PDF в golang] (https://stackoverflow.com/questions/44560265/how- to-extract-plain-text-from-pdf-in-golang) – LeMoussel