Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | adamowicz | afera | alsamixer | amazon | amber | anniversary | antypis | apache | api | applebaum | arm | armenia | astronomy | asus | atom.xml | awk | aws | bachotek | bakłażan | balcerowicz | balta | banan | bash | batumi | berlin | białowieża | białystok | bibtex | bieszczady | biznes | blogger | blogging | blosxom | bme280 | bono | borne-sulinowo | breugel | bt747 | budapeszt | budyń | bursztyn | canon | cedewu | chaos | chello | chiller | chillerpl | chown | christophe dominici | chujowetaśmy | ciasto | cmentarz | contour | coronavirus | covi19 | covid | covid19 | cron | css | csv | cukinia | curl | cycling | d54250wykh | dbi | debian | dejavu | dhcp | dht22 | dia | docbook | dom | dp1500 | ds18b20 | duda | dulkiewicz | dyndns | dynia | ebay | economy | ecowitt | ekonomia | elka | elm | emacs | emacs23 | english | ep | erasmus | erasmusplus | ess | eu | eurostat | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc29 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | folau | fontforge | fontspec | fonty | food | fop | forms | foto | france | francja | fripp | froggit | fuczki | fuji | fuse | gammu | garden | garmin | gas | gawk | gazwyb | gdańsk | gdynia | gender | geo | geocoding | georgia | gft | ggplot | git | github | gmail | gmaps | gnokii | gnus | google | google apps script | googlecl | googleearth | googlemaps | gotowanie | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | gus | gw1000 | haldaemon | handbrake | hhi | historia | history | hitler | holocaust | holokaust | hp1000se | hpmini | humour | iblue747 | ical | iiyama | ikea | imagemagick | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kajak | kamera | karob | kleinertest | kml | kmobiletools | knuth | kociewie kołem | kod | kolibki | komorowski | konwersja | krutynia | krynki | kuchnia | kurski | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | lgbt-folly | liberation | linksys | linux | lisp | lisrel | litwa | lizbona | logika | ltr | lubowla | lwp | lwów | m2wś | malta | mapquest | mapsource | maradona | marchew | marimekko | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mevo | mh17 | michalak | michlmayr | microsoft | monitor | mp4box | mplayer | ms | msc | mssql | msw | mswindows | mtkbabel | museum | muzyka | mymaps | mysql | mz | nafisa | nanopi | natbib | navin | nekrolog | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | ocr | odessa | okular | olympus | ooffice | ooxml | opera | osm | otf | otftotfm | other | overclocking | ozbekiston | panoramio | paryż | pdf | pdfpages | pdftex | pdftk | pedophilia | perl | photo | photography | picasa | picasaweb | pim | pine | pis | pit | plotly | pls | plugin | po | podlasie | podróże | pogoda | politics | polityka | polsat | portugalia | postęp | powerpoint | połtawa | prelink | problem | propaganda | pseudointeligencja | pstoedit | putin | python | pywws | r | r1984 | radio | random | raspberry | raspberry pi | raspberrypi | raspbian | refugees | relaxng | ridley | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | rumunia | russia | rwc | rwc2007 | rwc2011 | rwc2019 | rzym | samba | sds011 | selenium | sem | sernik | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | sqlite | srtm | sshfs | ssl | staszek wawrykiewicz | statistcs | statistics | stats | statystyka | stix | stretch | supraśl | suwałki | svg | svn | swanetia | swornegacie | szwajcaria | słowacja | tbilisi | terrorism | tesseract | tex | texgyre | texlive | thunderbird | tomato | totalnaopozycja | tourism | tramp | trang | transylwania | truetype | trzaskowski | ttf | turcja | turkey | turystyka | tusk | tv | tv5monde | tweepy | twitter | tykocin | typetools | ubuntu | uchodźcy | udev | ue | ukraina | umap | unix | upc | updmap | ups | utf8 | uzbekistan | varia | video | vienna | virb edit | virbedit | vostro | wammu | wdc | wdfs | weather | weathercloud | webcam | webdav | webscrapping | weewx | wh2080 | wiedeń | wikicommons | wilno | win10 | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | ws1080 | wtyczka | wunderground | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zawodzie | zdf | zdrowie | zgony | łeba | świdnica | żywność
Archiwum
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Poprawianie czytelności obrazków za pomocą Imagemagick

Dokument oryginalny

Wersja BW

Wersja BW pogrubiona

Wersja bez nagłówka

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

Wersja ostateczna

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

url | Tue, 20/10/2020 19:08 | tagi: , ,
Odzyskiwanie danych nt COVID119 z twitów Ministerstwa Zdrowia

Dokument #1

Dokument #2

Pobielenie

Dokument gotowy do OCR

Że się pandemia rozwija zachciało mi się odzyskać dane podawane przez polskie Ministerstwo Zdrowia na Twitterze w formie komunikatów obrazkowych. Otóż raz dziennie o 10:00 pojawia się rysunek zawierający dane dotyczące zajętych łóżek dedykowanych COVID-19, zajętych respiratorów, liczby osób objętych kwarantanną i jeszcze dwóch innych rzeczy. Ponadto, raz na tydzień w poniedziałek pojawia się rysunek z liczbą testów w podziale na województwa. Tych danych nie ma na stronie MZ, a jeżeli są to tak publikowane, że ja nie potrafię tego odszukać. Że MZ udostępnia dane obrazkowo za pośrednictwem amerykańskiej firmy zamiast w sposób opisany ustawą o dostępnie do informacji publicznej to oczywiście skandal i żenada.

Cały stream https://twitter.com/MZ_GOV_PL to ja mam ściągnięty. Tam nie ma obrazków; są URLe do obrazków, które można łatwo pobrać. Ja to robię na raty, najpierw json do csv:

#!/usr/bin/perl
# Zamiana Json -> CSV
use JSON;
use Time::Piece;
use open ":encoding(utf8)";
use open IN => ":encoding(utf8)", OUT => ":utf8";
binmode(STDOUT, ":utf8");

print "id;date;repid;text\n";

while (<>) { chomp();
  $tweet =  $_;

  my $json = decode_json( $tweet );
  $tid = $json->{"id"};
  $dat = $json->{"created_at"};
  $dat = Time::Piece->strptime($dat,
   "%a %b %d %H:%M:%S %z %Y")->strftime("%Y-%m-%dT%H:%M:%S");

  $mmm = $json->{"entities"}{"media"}; ## lista-haszy

  for $mm ( @{$mmm} ) { $media = $mm->{media_url} ;
    ## id-tweeta;data;url-do-rysunku
    print "$tid;$dat;$media\n";  }
}

Teraz można ściągnąć rysunku zwykłym wgetem albo curlem, pobierając URLa z cvsa. Rysunki o łóżkach i wentylatorach pojawiają się codziennie około 10:30 (czyli 8:30 GMT). Rysunki o liczbie testów wg województw w poniedziałki generalnie około 16:00. Więc prostym skryptem Perla ściągam poniedziałkowe rysunki opublikowane po 13:30GMT oraz wszystkie po 8:00GMT a przed 10:00GMT. Po ściągnięciu oglądam i wywalam nierelewantne.

OCR robię programem tesseract:

tesseract PLIK.png PLIK

Powstanie PLIK.txt a w nim tekst z rysunku. Z danymi poniedziałkowymi był problem, tesseract się gubił i PLIK.txt nic nie zawierał Żeby mu pomóc najpierw upraszczałem rysunek:

#!/bin/bash
## pomaluj na biało fragmenty nie zawierające liczb
convert "$1" -fill white -draw "rectangle 0,0 1200,115" \
  -draw "rectangle 0,640 200,675"  \
  -draw "rectangle 350,115 830,540" PLIK_0.png
## zamień wszystkie kolory na biały za wyjątkiem czarnego:
convert PLIK_0.png -fuzz 30% -fill white +opaque black PLIK_1.png
## zrób OCR
tesseract PLIK_1.png PLIK_1
## oczyść i dopisz wiersz do WYNIKI.txt
grep '[0-9]' PLIK_1.txt | \
awk '{gsub(/[ \t]/, ""); l = l ";" $0 }; END{print l}' > WYNIKI.txt

Jeżeli powyższy skrypt nazywa się png2txt.sh to teraz:

for x in *.png; do
   if [ -f $x ] ; then
        png2txt.sh $x
   fi
done

Raporty poniedziałkowe zaczęły być wysyłane od 11 maja 2020. Raporty codzienne pobrałem od początku lipca. W szczególności rysunki `poniedziałkowe' zawierają dane kumulowane. Kiedy na podstawie tych danych utworzyłem dane `tygodniowe' (jako różnica między stanem na bieżący tydzień minus stanem na poprzedni tydzień), to dla województwa świętokrzyskiego i raportu z 10 sierpnia rezultat okazał się ujemny i do tego ogromny. Licznik cofnęło mówiąc kolokwialnie.

Po wpisaniu do google testy+świętokrzyskie się okazało, że sprawa jest znana: przez 2 miesiące województwo świętokrzyskie podawało dane ewidentnie z sufitu raportując 100% wzrost tydzień/tydzień przy maksymalnym dla następnego województwa poziomie 15%... Jak po 2 miesiącach tej twórczości doszli do absurdalnej liczby ktoś się w MZ połapał i napisał (na Twitterze), że należy odjąć te lipne 230 tys...

No to tak z grubsza wygląda rzetelność danych n/t COVID19 w PL...

Pozyskane dane są: tutaj.

url | Wed, 14/10/2020 20:11 | tagi: , ,