Ż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