Hi Michael,

You're absolutely right, PDF extraction can be a real headache!
I've tried Mike's suggestion, but unfortunately, it didn't quite work as
I'd hoped – it put each character on a separate line, which made it just as
difficult to work with.

I think I'll give OCR a shot and see if that yields better results. If that
doesn't pan out, I might explore some Python libraries, as you suggested.

Thanks again for your input, it's much appreciated!

Best regards,
Hugh


On Thu, Jan 23, 2025, 12:49 PM Michael Bright <mjbrigh...@gmail.com> wrote:

>
> Hi Mike,
>
> Not wanting to suggest that you take the Python route, but just sharing my
> experience.
>
> I've tried Acrobat Reader's "Save as Text" functionality, and also one or
> two Python libraries to extract text from PDFs (PyPDF2 is the one I've
> settled on).
>
> But what I learnt - without really digging into the issue - is that PDF is
> a pretty weird format where text from the same sentence/paragraph "floats
> around" as separate objects.
> Bottom line is -  no matter what tool you use - you may find it really
> tricky to get polished text from what seems like a simple PDF.
>
> That said ... please please prove me wrong !
> If anyone has a good pdf extraction tool in any easy to use form I'm
> interested.
>
> My own use case is to extract text from some partner training materials
> which I regularly deliver so that I can do a diff to see what changed
> between releases (obviously if they actually summarized that would be
> ideal, but they point me to pdfdiff ... yuk).
>
> I have some scripting that - just about - works but it's an absolute pain
> having
> - sentence/paragraphs broken up into multiple lines (and not the same
> across releases)
> - embedded code (in boxes) is indistinguishable from other text.
>
> My 2cts.py,
> another Mike.
>
>
> On Thursday, January 23, 2025 at 1:30:33 PM UTC+1 Hugh Myrie wrote:
>
> Hi Mike,
>
> Thanks for the suggestion! I'm interested in checking out your forked
> code. It seems like a good alternative to what I'm currently using.
>
> Hugh
>
> On Wed, Jan 22, 2025, 10:25 PM Mike Schinkel <mi...@newclarity.net> wrote:
>
> Hi Hugh,
>
> I have been planning to do some Go work with PDF files, so your email
> triggered me to do some research.
>
> Not sure it using heussd/pdftotext-go is critical to you, or if you are
> just trying to read text in a PDF?  I tried to get pdf2text installed but
> my dev laptop is still running macOS Monterey and I couldn't get it working
> so I looked for other options.
>
> If you are just interested in reading PDF text and do not have a specific
> need to use pdf2text then one those others I looked at might work. I came
> across a package originally developed by Russ Cox that was forked by many
> others, and to evaluate it I forked one of those and then converted it from
> using a reader to returning a slice of strings so I could easily split out
> the new lines. (I could probably have make it work with the reader, but I
> was just going for quick.)
>
> If you think it can help your use-case, please check it out (but be aware,
> my additions to the forked code are rather hacky):
>
> https://github.com/mikeschinkel/go-pdf-content-reader
>
> -Mike
>
> On Jan 22, 2025, at 11:08 AM, Hugh Myrie <hugh....@gmail.com> wrote:
>
> I want to extract text from a PDF and preserve any table or at least
> convert it to a CSV. I am using the PDFtoText package (which uses the
> Poppler software). The text is extracted vertically (i.e. one column at a
> time) and each text is separated by a space. There is no line break making
> it difficult to manipulate. I want to extract the text horizontally to
> preserve and possible add line breaks to allow for further manipulation.
>
> Your help in this matter is appreciated. Suggest alternatives if available.
>
> Here is the Go code:
>
> package main
>
> import (
>     "fmt"
>     "log"
>     "os"
>
>     pdftotext "github.com/heussd/pdftotext-go"
> )
>
> func main() {
>     // Replace "test.pdf" with the path to your PDF file
>     pdfPath := "test.pdf"
>     // Open the PDF file
>     f, err := os.Open(pdfPath)
>     if err != nil {
>         log.Fatalf("Failed to open PDF file: %v", err)
>     }
>     defer f.Close()
>     // Read the file content
>     content, err := os.ReadFile(pdfPath)
>     if err != nil {
>         log.Fatalf("Failed to read PDF file: %v", err)
>     }
>     // Extract text from the PDF file
>     text, err := pdftotext.Extract(content)
>     if err != nil {
>         log.Fatalf("Failed to extract text from PDF file: %v", err)
>     }
>     // Print the extracted text
>     fmt.Println(text)
> }
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts...@googlegroups.com.
> To view this discussion visit
> https://groups.google.com/d/msgid/golang-nuts/c19e212d-a81f-4525-ae0d-a9abb0b292fbn%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/c19e212d-a81f-4525-ae0d-a9abb0b292fbn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "golang-nuts" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/golang-nuts/f7aJwHTcZwQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion visit
> https://groups.google.com/d/msgid/golang-nuts/70c80f52-96e4-4e3d-94af-25015515abb5n%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/70c80f52-96e4-4e3d-94af-25015515abb5n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/CAN-X3%3Db14aawFUeT7Y%2Bek_hm4s_%3DQHrO1LfA8h1K6i3kbXTDfg%40mail.gmail.com.

Reply via email to