wtorek, 20 października 2020

Poprawianie czytelności obrazków za pomocą Imagemagick


Dokument oryginalny

Wersja BW

Wersja BW pogrubiona

Wersja bez nagłówka

Wersja ostateczna

Dziś (drugi dzień używania) tesseract wyłożył się na względnie prostym rysunku pn. dzienny raport o koronawirusie:

tesseract 20201020T080001_raport.png 00001
##  pomija dwie pierwsze liczby, zawiera wiele nieistotnych znaków

tesseract 20201020T080001_raport.png 00002 -c preserve_interword_spaces=1 --psm 6
## prawie dobrze zdekodował liczby:
## 8 962         725 289447 44675 95956
## ale w pliku są jeszcze inne znaki

tesseract 20201020T080001_raport.png 0003 --psm 6 -c tessedit_char_whitelist=0123456789 \
-c preserve_interword_spaces=1
## w zasadzie nic nie zmienia

convert 20201020T080001_raport.png -threshold 85%  raport-bw.png
tesseract raport-bw.png raport-bw --psm 6
# pierwszy wiersz zamienia rysunek na b-w
# tesseract działa prawie prawidłowo, tj. zwraca:
#
# DZIENNY RAPORT 0 KORONAWIRUSIE
# ? 0 N ?
# 8 962 725 289447 44675 95956
#
# pierwsza liczba ma ekstra odstę

convert 20201020T080001_raport.png  -threshold 85% \
  -morphology erode diamond raport-bw-m.png
tesseract raport-bw-m.png raport-bw-m --psm 6
# DZIENNY RAPORT 0 KORONAWIRUSIE
# ? \ (ae \\ (@
# 8962 725 289447 44675 95956
# a
# IN.
#

convert 20201020T080001_raport.png  -threshold 85% \
  -crop 1140x75+50+400
  -morphology erode diamond raport-bw-mc.png
tesseract raport-bw-mc.png raport-bw-mc --psm 6
# Jeden prawidłowy wiersz
# 8962 725 289447 44675 95956

Opcja -morphology erode diamond pogruba; opcja -crop 1140x75+50+400 wycina prostokąt 1140x75 pikseli pomijając pierwszych 50/400 pikseli (poziom/pion). Wartości 1140/75/50/400 znalazłem wczytując plik PNG do gimpa.

No więc wersja na dziś to nie:

## zamalowanie na biało wszystkiego nad liczbami:
convert PLIK.png -draw "rectangle 0,0 1200,380" -fill white PLIK_0.png

ale:

convert PLIK.png -threshold 85% -crop 1140x75+50+400 \
  -morphology erode diamond PLIK_0.png

Po odczytaniu danych są one dopisywane do pliku CSV, następnie tworzone są wykres (za pomocą R), które w ostatnim kroku są wysyłane na Twittera.

Ciekawe jak to będzie długo działać, bo mam mocne wrażenie że osoby odpowiedzialne za udostępnianie danych w MinZdrowia to amatorzy/dyletanci.

Zobacz też tutaj.

Przy okazji instalowanie tesseracta w systemie Debian to:

apt install tesseract-ocr libtesseract-dev
## poniższe jest opcjonalne:  
apt install tesseract-ocr-pol tesseract-ocr-eng \
  tesseract-ocr-ger tesseract-ocr-deu

2 komentarze: