タイプ変換は分かりません。私はこれが正しいのではないことを知っています、私が得るのは、象徴の束です。私は文字列で仕事をしたいgolangでPDFから単語を抽出しますか?
f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)
....
タイプ変換は分かりません。私はこれが正しいのではないことを知っています、私が得るのは、象徴の束です。私は文字列で仕事をしたいgolangでPDFから単語を抽出しますか?
f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)
....
私が得るすべては、象形文字の束です。
あなたが得るのは、クリアテキストではないpdfファイルの内容です。
GoでPDFファイルを読む場合は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ライブラリを試してみました、と私は期待のような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)
}
私はあなたのlibのバグを持っているが、それは 'ledongthuc/pdf' Gitの上で問題を投稿することができことはできません。 – LeMoussel
@LeMoussel、なぜ私のプロジェクトで問題を作成できないのか分かりません。しかし、とにかく、あなたはここにバグを送るように頼むことができます、私はあなたを助けようとします –
@ Le Dong Thuc:[ゴランのPDFからプレーンテキストを取り出す方法](https://stackoverflow.com/questions/44560265/how- pdf-in-golang) – LeMoussel