Ż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.
Brak komentarzy:
Prześlij komentarz