Dlaczego tak mało zarabiamy w Polsce? Automatyzacja procesów: parsowanie PDF

UWAGA, ruszył Humble Book Bundle: DevOps - jak zwykle pierwszy próg 5 książek od $1, cały komplet od $15.

workPrzeczytałem gdzieś kiedyś zdanie, które utkwiło mi w pamięci, a brzmiało mniej więcej tak: „preferuję zatrudnianie ludzi leniwych; leniwy pracownik zawsze znajdzie sposób aby wykonać swoją pracę w szybszym czasie i niższym kosztem”. Odnosiło się to pracy w obszarach IT.

Powszechne jest w polskim internecie narzekanie ludzi na zarobki. Tylko dlaczego tak mało jest samokrytyki do samych siebie? Może mało zarabiamy ponieważ jesteśmy niewydajni? Może nasz pracodawca jest niewydajny i nie optymalizuje procesów?

Często jest tak, że wykonanie pewnej czynności przez konkretną osobę, może być wykonane w czasie stukrotnie  krótszym przez kogoś innego i to przy niższych kosztach. Problemy takich optymalizacji mają głównie mali przedsiębiorcy. Sęk w tym, że udział mikro, małych i średnich przedsiębiorstw w tworzeniu PKB wynosi powyżej 50% (dane)

Przykłady marnowania zasobów.

Z obserwacji pracy mikroprzedsiębiorstw mogę wysunąć następujące wnioski:

  1. Firmy nie posiadają komputerowych baz danych klientów. Kontakty zapisywane są w zeszytach, telefonach komórkowych, itp. Wyszukiwanie kontaktu sprowadza się do wertowania kartek.
  2. Wysyłka wiadomości SMS do klientów wykonywana jest manualnie, przez pracowników za pomocą zwykłych smartfonów. Wydawało mi się to nie możliwe, żeby pracodawca zlecił pracownikom wysyłkę kilku tysięcy smsów, a jednak. W jednej z firm skorzystanie z rozwiązań sms api i wysyłki wszystkich wiadomości w 5 minut wedle szefa było za drogie (sic, 6 groszy za sms). Tak, bo lepiej zaangażować dwóch pracowników na cały dzień roboczy? Gdzie tu kalkulacja?
  3. Brak spisywanych procesów. Np. przygotowanie materiałów do pewnego zdarzenia wymaga podjęcia dwudziestu kroków. Pracownik za każdym razem wykonuje wszystkie czynności z pamięci. Często zdarzają się pomyłki i pominięcia kilku czynności. Czy taki pracownik nie mógłby spisać sobie tych wszystkich kroków w postaci check listy? Odpowiedź pracownika: „a po co? przecież pamiętam.”.
  4. Nie stosuje się korespondencji seryjnej.
  5. Firmy ręcznie pieczątkują koperty zamiast uruchomić zbiorczy wydruk.
  6. Firmy nie cenią pracowników za ich pomysły umożliwiające zwiększenie wydajności.
  7. Firmy nie chcą wprowadzać zmian.
  8. Pracownicy firm pracujący na komputerach nie znają nawet skrótów ctrl+c, ctrl+v. Szefowie również.

Tylko kto za to wszystko płaci?

Niestety my wszyscy. Nieudolność zarządzania małymi przedsiębiorstwami wliczona jest w cenę produktów i usług. Mało tego, błędy takie kumulują się.

Jeśli hurtownia fryzjerska stosuje takie praktyki, musi podnieść koszt farby do włosów. Sklep kupuje farby z hurtowni, jeśli ten sklep również nie optymalizuje kosztów, musi zwiększyć cenę szamponu. Fryzjer kupuje szampon w sklepie, a nam nalicza odpowiednią kwotę za usługę (powiększoną również o jego koszta). Za błędy zarządzania płacimy wszyscy, we wszystkim co kupujemy.

Do rzeczy, konkretny przykład z życia

Zadanie pracodawcy: otrzymaliśmy ok. tysiąca pięćset dokumentów pdf; w każdym z nich zapisany jest pesel. Naszym zadaniem jest wypisanie z dokumentów wszystkich numerów na liście.

Co robi pracownik? Otwiera po kolei każdego pdfa i szuka. Znajduje pesel, zapisuje na liście, otwiera kolejny dokument i tak w kółko. Średnio jeden dokument na minutę. Wykonanie tego wszystkiego bez przerw zajmuje trzy dni robocze (powyżej. 25 godzin) i kosztuje pracodawcę trzy dniówki.

Co powinien zrobić pracodawca? Zlecić zadanie osobie umiejącej programować. Wykonanie programu zajmie ok. 1,5 godziny. Zadanie będzie szesnastokrotnie szybciej zrealizowane przez programistę niż przez zwykłego pracownika. Praca będzie wykonana szybciej, taniej i z możliwością powtarzania tej czynności.

Odczyt i wyszukiwanie danych z PDF

W naszym programie musimy wyodrębnić dwie podstawowe czynności:

  1. Pobranie tekstu.
  2. Wyszukanie numeru pesel.

Przygotowuję standardowy projekt mavena dołączając do niego bibliotekę itext-4.2.0.

Na początek kilka interfejsów i implementacji:

Tutaj posiłkowałem się gotowym kodem do walidacji peseli od Klaudiusza Kulika

 

Klasa wyszukująca pesele w tekście za pomocą wyrażeń regularnych:

To na co należy zwrócić uwagę, to lokalna zmienna lastStart. W przypadku gdyby w tekście pojawił się numer pesel 75091300090 a przed nim umieszczona byłaby bezpośrednio inna cyfra, np. 5, wtedy wyszukany byłby do zwalidowania tylko taki ciąg: 57509130009. Dlatego stosuję zapamiętanie ostatniego początkowego indeksu wyszukanego wyrażenia, aby w kolejnym przebiegu rozpocząć wyszukiwanie od znaku znajdującego się bezpośrednio po nim. Dzięki temu walidacji zostaną poddane w tym przypadku oba ciągi cyfr: 5750913000 i 7509130009.

Kolejny interfejs – do odbioru zwalidowanych danych:

Poniższa klasa zapamiętuje wyszukane wartości w zbiorze, dzięki czemu wynik będzie zawierał tylko unikalne numery pesel.

Musiałem utworzyć prostą klasę listenera do odczytu pdf, ze względu na to, że domyślna implementacja biblioteki itext zawiera błąd powodujący wystąpienia wyjątków IndexOutOfBoundsException podczas odczytu pliku.

I na koniec klasa wiążąca obiekty powyższych klas:

W tym momencie  aby wyświetlić na wyjściu wszystkie pesele znajdujące się w pliku C:\pdf.pdf należy wywołać:

Dosyć proste. Ważną kwestią jest wyodrębnienie interfejsów, dzięki czemu np. dodanie możliwości wyszukiwania numerów NIP będzie wiązało się z dodaniem nowych klas NipContentFinder i NipValidator bez konieczności modyfikacji istniejących klas. Jesteśmy otwarci na zmiany, ale zamknięci na modyfikacje (The Open Closed Principle).

Do kompletnego wykonania zlecenia pracodawcy należy już tylko wylistować wszystkie pliki pdf i dla każdego z nich wywołać powyższe wyszukiwanie.

UWAGA, ruszył Humble Book Bundle: DevOps - jak zwykle pierwszy próg 5 książek od $1, cały komplet od $15.

To również może Cię zainteresować:

  • Bielsko-Biała JUG #4, Jarosław Pałka – JIT me baby one more time.Bielsko-Biała JUG #4, Jarosław Pałka – JIT me baby one more time. Wczoraj odbyło się czwarte spotkanie Bielsko-Bialskiej grupy miłośników Javy i programowania (Bielsko-Biała JUG). Tym razem prelekcję przygotował dla nas Jaroslaw Palka - od ponad 15 lat w […]
  • HTML, CSS 2.1 i dokumenty PDFHTML, CSS 2.1 i dokumenty PDF W ostatnim czasie realizowałem projekt w którym należało zaprojektować ok. sto dokumentów PDF w postaci różnego rodzaju wniosków, w różnym układzie. Ten, kto kiedykolwiek generował […]
  • Parsujemy strony internetowe – import listy filmów dokumentalnychParsujemy strony internetowe – import listy filmów dokumentalnych Istnieje w polskim internecie strona internetowa katalogująca filmy dokumentalne: www.filmydokumentalne.eu. Właściciele wordpressowej strony twierdzą, że nie naruszają prawa […]
  • Permutacje, cz. 2 – algorytmyPermutacje, cz. 2 – algorytmy W poprzednim wpisie programistyczne rozwiązanie zagadki polegało na wygenerowaniu wszystkich permutacji zbioru i sprawdzeniu każdej z nich pod względem spełnienia warunku […]
  • Wzorce projektowe – dekoratoryWzorce projektowe – dekoratory Dekorator to jeden se strukturalnych wzorców projektowych, dzięki któremu możemy wykorzystać kompozycję w alternatywie do dziedziczenia w celu rozszerzenia zachowania klasy. W przypadku […]
  • 10-letni chłopak zdobył 100% na egzaminie OCPJP z Javy!10-letni chłopak zdobył 100% na egzaminie OCPJP z Javy! W zeszłym roku Ronil Shah zaskoczył prawie wszystkich zdobywając sto procent punktów w egzaminie z Javy OCPJP. Jednak to nie wszystko. Najciekawsze jest to, że egzamin ten przewidziany […]

3 thoughts on “Dlaczego tak mało zarabiamy w Polsce? Automatyzacja procesów: parsowanie PDF

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *