Settings

Theme

Frog: OCR Tool for Linux

tenderowl.com

172 points by Epitom3 3 years ago · 48 comments

Reader

recuter 3 years ago

Appears to be a nice wrapper around Tesseract:

https://github.com/tesseract-ocr/tessdata

https://en.wikipedia.org/wiki/Tesseract_(software)

The demo of course works perfectly on a Mac as this is already built into Ventura.

If you haven't experienced it yet ye olde ctrl-f now seamlessly sneaks a peak into images on the page for example, surprisingly useful.

  In November 2020, Brewster Kahle from the Internet Archive praised Tesseract saying:

  Tesseract has made a major step forward in the last few years. When we last evaluated the accuracy it was not as good as the proprietary OCR, but that has changed– we have done evaluations and it is just as good, and can get better for our application because of its new architecture.
Anybody have an up to date breakdown of available OCR solutions?
  • nickserv 3 years ago

    There's also DocTR which can do text detection and extraction out of the box.

    It's command line driven but can display the detected text as an overlay of the document.

    https://github.com/mindee/doctr

  • Icko 3 years ago

    Last I compared them, (1-2 years ago), Google OCR was much much better and supported more languages than tesseract. There was also an OCR in openCV, which was slightly better than tesseract, but not good enough to be useful.

    • rafram 3 years ago

      I’m not aware of any separate OCR in OpenCV. Some builds include an interface to Tesseract, which might be what you’re thinking of. Tesseract certainly benefits from preprocessing (conversion to grayscale, posterization) with OpenCV.

    • lasagna_coder 3 years ago

      What are these projects are you referring to? AFAIK Tesseract is sponsored by Google, from what I understand it is state of the art, ie it is Google OCR. Searching for OCR with OpenCV only reveals using OpenCV with Tesseract, not rolling its own OCR, OpenCV being used to preprocess images to optimise them for Tesseract. Maybe I'm missing something, so I'm interested if you can point me in the right direction.

      • spi 3 years ago

        Google OCR is definitely not the same as Tesseract, although it's true that Tesseract is maintained by Google. Google OCR has definitely much higher accuracy and is significantly faster (basically always taking 1s for inference, while Tesseract can easily take 10s or more for dense pages).

        Source: I work in developing a competing OCR service and we keep an eye on competition (e.g. aside from Google, solutions by Azure, Amazon, Abbyy, Nuance, Cloudmersive, etc., as well as our internal product of course, which is not available externally), and they are (almost) all significantly better on Tesseract.

        The only domain where Tesseract is competitive is for perfect "black text on white paper", it gives pretty poor performance when dealing with colored, distorted text, or even strong page structure effects (tables, etc.).

        When I say "pretty poor" I mean: "with respect to the state-of-the-art", of course it's still enormously better than what was the state-of-the-art before deep learning came into the picture, roughly a decade ago. And for things like "search contents of a book" it's basically perfect already.

        • recuter 3 years ago

          > Source: I work in developing a competing OCR service and we keep an eye on competition (e.g. aside from Google, solutions by Azure, Amazon, Abbyy, Nuance, Cloudmersive, etc., as well as our internal product of course, which is not available externally), and they are (almost) all significantly better on Tesseract.

          Great. How do you quantify it and keep track? Is there an industry standard benchmark?

          Would you consider sharing a backblaze type analysis (they track consumer HD performance and blogging about it got them a lot of attention and customers)?

          • spi 3 years ago

            Sorry for the late answer.

            Short answer is: we can't and we don't. Most EULAs explicitly prevent users to benchmark results, and we don't want to incur into any such risk. Plus, since we develop a competing product, any "deep look" into the competition might be seen as reverse engineering it, and our company is very careful to avoid such problems.

            Our company has dedicated teams to evaluate competition products, so we once asked them (a couple of years ago), and could only look at aggregated, anonymized results. But the patterns were very clear. Anecdotical experience (mostly coming from customers of ours who, themselves, compare our internal engine with alternatives) seemed to point to the fact that most of the competition have rather stable service, so quality likely didn't evolve much in the last two years, but we can't be sure of course.

            We constantly track our own accuracy on internally developed benchmarks, because frankly the ones available online (also for research purposes) are very bad. But as said, we can only continuously test our own engine and open source ones (like Tesseract), for legal reasons.

        • sireat 3 years ago

          Working for a library on rare fonts I've found Tesseract fantastic for custom training.

          It certainly beats Abbyy from 10 years ago - maybe a low bar to clear.

          I had to spend some time setting up labeling then did some supplemental training on UB-Mannheim datasets.

          Tesseract is the only OCR FOSS solution that has reasonable performance.

        • rjzzleep 3 years ago

          > The only domain where Tesseract is competitive is for perfect "black text on white paper", it gives pretty poor performance when dealing with colored, distorted text, or even strong page structure effects (tables, etc.).

          I wouldn't be surprised if their data set is bigger than the stock tesseract, but part of the OCR process is to preprocess the images.

        • cinntaile 3 years ago

          I don't get how it's a competing product if it's not available externally? What field is it if you can answer that?

          • spi 3 years ago

            Sure, our company deals with business documents and typically sells products higher in the stack. Our OCR offering is available to customers, but only if they buy a significantly larger pack of products that does information extraction. As a matter of fact, OCR results are included in there, so customers could (and very rarely do) buy the whole package for OCR purposes only. It's just not advertised/sold independently, so it doesn't make much sense for most customers to buy it for that purpose (unless they have really tiny volumes) because price-wise is much more expensive than alternative products only selling OCR.

    • holbue 3 years ago

      I agree, there are way better cloud based and proprietary OCR solutions out there. But Tesseract still seems to deliver the best results among the FOSS tools, doesn't it?

      Back in the days, Cuneiform got close to Tesseract's performance, but AFAIK it wasn't developed further...

      Does anyone else know other promising open-source OCR engines?

  • captnswing 3 years ago

    On a Mac, for ad-hoc OCR, I use the immensely useful CleanShot X https://cleanshot.com/ (which is well worth paying for).

    Among many other things, it offes OCR of any region on the screen

    for larger-scale OCR processing of pdfs and other files, I love how s3-ocr https://simonwillison.net/2022/Jun/30/s3-ocr/ makes working with AWS Textract OCR more accessible (though, somehow, Textract refuses to fully OCR larger pdfs I possess..)

    • kube-system 3 years ago

      On the latest MacOS, OCR happens automatically in any screenshot, or any image you open in Preview.

      Try Command+Shift+4, grab part of the screen, click the pop-up, and just select text.

  • ce4 3 years ago

    I use https://kebekus.gitlab.io/scantools for scanning, it builds on top of tesseract and works great for pdf enhancements

    • rjzzleep 3 years ago

      You might be interested in https://github.com/ocrmypdf/OCRmyPDF then.

      It does quite some preprocessing on the PDF pages before passing it on to tesseract.

      • angrygoat 3 years ago

        I've found ocrmypdf to be excellent: the only issue I've had is with PDFs with differing page sizes; it seems to scale everything up to the size of the largest page, which can be a bit of a pain.

  • IceHegel 3 years ago

    In 2019 I was working on a project that involved OCRing millions of scanned historical documents. I evaluated Google, Azure, Amazon, Adobe, ABBYY, and Tesseract somewhat rigorously.

    Google's was by far the best, especially for obscured or malformed characters. Azure was second and I ended up merging the results from both.

    For my use case (in Spring 2019) Tesseract was not very accurate and struggled with slanted text especially. Hopefully that has changed.

  • bjacobt 3 years ago

    I’ve had good results from paddle ocr.

    https://github.com/PaddlePaddle/PaddleOCR

  • jibbers 3 years ago

    And for older Mac OS's T-Rex https://trex.ameba.co

twobitshifter 3 years ago

On windows this is built into powertoys. win+shift+T is the default shortcut.

https://learn.microsoft.com/en-us/windows/powertoys/text-ext...

mavu 3 years ago

I probably shouldn't but I dislike using libraries for the main part of your project and then not even mentioning that you are using them.

Seems dishonest to me, but maybe I'm just too strict.

  • mewse-hn 3 years ago

    Yeah.. if I have to dig into your python code on github to figure out what library you're using for the main feature of your project (OCR in this case), I'm not impressed

rjzzleep 3 years ago

This looks like a nice app. I was looking for something like this a while back until I noticed that there are "one" liners that can you can setup for a hotkey:

    #!/usr/bin/env bash
    langs=(eng ara fas chi_sim chi_tra deu ell fin heb hun jpn kor nld rus tur)
    lang=$(printf '%s\n' "${langs[@]}" | dmenu "$@")
    maim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bi
  • tmerse 3 years ago

    Nice! Didn't know about maim. This looks better than what I currently use (found it somewhere on the internet).

      #!/bin/bash
      SRC_IMG=$(mktemp -u /tmp/ocr_XXXXXXXXX.png)
      scrot --select "$SRC_IMG" -q 100
      mogrify -modulate 100,0 -resize 400% "$SRC_IMG"
      tesseract "$SRC_IMG" "$SRC_IMG" &> /dev/null
      OCR_RESULT=$(cat "$SRC_IMG.txt")
      echo "$OCR_RESULT"
      notify-send "$OCR_RESULT"
      xsel -bi < "$SRC_IMG.txt"
    • rjzzleep 3 years ago

      I mean don't scrot and maim do the same? It can write to stdout as well. Is the resize really worth it?

      • aidenn0 3 years ago

        Tesseract get's significanlty better results after resize; can probably get away with a 2x resize on a 4k monitor, but 4x is good for e.g. 1200p

  • tjoff 3 years ago

    Nice, that is great! I adapted this to work for me on wayland (sway):

    grim -g "$(slurp)" - | tesseract --dpi 145 -l eng+${lang} - - | wl-copy

    Using grim to take a screenshot, slurp to mark a region on your screen and wl-copy to copy to clipboard.

  • ducktective 3 years ago

    I wonder if it's possible to auto-detect the language. Meaning, instead of the priority list, it finds out the most probable language a script belongs to in the first sweep.

  • ever1337 3 years ago

    yeah, i have a script almost identical to this that i've been using with i3 for a long time

lervag 3 years ago

Cool! I've seen similar ideas before and made my own inspired by these some years ago. It's a simple bash script based on Flameshot [0] for taking the screenshot and Tesseract:

    #!/usr/bin/env bash

    rm -f /tmp/screen.png
    flameshot gui -p /tmp/screen.png

    tesseract \
      -c page_separator="" \
      -l "eng" \
      --dpi 145 \
      /tmp/screen.png /tmp/screen

    if [ "$(wc -l < /tmp/screen.txt)" -eq 0 ]; then
      notify-send "ocrmyscreen" "No text was detected!"
      exit 1
    fi

    xclip /tmp/screen.txt
    notify-send "ocrmyscreen" "$(cat /tmp/screen.txt)"
[0]: https://flameshot.org/
ensocode 3 years ago

This is a nice app, thanks. I am using a similar a bit less UI-heavy tool based on Tesseract as well. It's called Normcap: https://github.com/dynobo/normcap

xchip 3 years ago

Nice, but it should give credits to Tesseract and mention how much HD space it requires for the UI dependencies.

seltzered_ 3 years ago

Oh nice. There hasn't been a good ocr screenshot tool with Wayland support yet so look forward to trying this. IIRC there's been..

Linux: dpScreenOCR - x11 only last I checked in and now Frog

MacOS: screenotate, prizmo

Windows: screenotate

I don't get all the nitpick comments. OCR tools like this are extremely useful when dealing with excerpting text from certain websites (slack) or taking class notes from video.

habibur 3 years ago

Uses tesseract OCR on the ocr part.

schappim 3 years ago

FYI if you’re on a Mac, I’ve made this similar tool: https://github.com/schappim/macOCR

noisediver 3 years ago

A useful tool and great UI work. A handy extension would be the ability to extract text of specific colour, e.g. the highlights in Kindle's Cloud Reader, to get around the 10% highlight export cap that Amazon puts on most books. I did this previously by running the screenshot through ImageMagick's colour filling and thresholding options before passing the output to Tesseract. A colour picker tool might be a nice addition.

throwawaaarrgh 3 years ago

....why is it named frog?

jalacang 3 years ago

L

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection