ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΙΑΤΡΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Δημιουργία συστήματος διαχείρισης βάσης ιστολογικών εξετάσεων στοματογναθοπροσωπικής χειρουργικής Development of a database using histological reports on oral and maxillofacial pathology specimens ΠΑΠΑΔΟΠΟΥΛΟΣ ΛΑΖΑΡΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΠΑΜΙΔΗΣ ΠΑΝΑΓΙΩΤΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΙΑΤΡΙΚΗΣ ΣΧΟΛΗΣ Α.Π.Θ. ΘΕΣΣΑΛΟΝΙΚΗ 2013 2 ARISTOTLE UNIVERSITY OF THESSALONIKI POSTGRADUATE STUDIES IN MEDICAL INFORMATICS – MASTER OF SCIENCE THESIS Development of a database using histological reports on oral and maxillofacial pathology specimens PAPADOPOULOS LAZAROS SUPERVISOR: BAMIDIS PANAGIOTIS ASSIST. PROF., MEDICAL SCHOOL, ARISTOTLE UNIVERSITY THESSALONIKI 2013 3 4 ΕΞΕΤΑΣΤΙΚΗ ΕΠΙΤΡΟΠΗ: ΑΝΤΩΝΙΑΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ, ΚΑΘΗΓΗΤΗΣ, ΤΟΜΕΑΣ ΣΤΟΜΑΤΙΚΗΣ ΚΑΙ ΓΝΑΘΟΠΡΟΣΩΠΙΚΗΣ ΧΕΙΡΟΥΡΓΙΚΗΣ, ΟΔΟΝΤΙΑΤΡΙΚΗ ΣΧΟΛΗ, Α.Π.Θ. ΒΑΧΤΣΕΒΑΝΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ, ΤΟΜΕΑΣ ΣΤΟΜΑΤΙΚΗΣ ΚΑΙ ΓΝΑΘΟΠΡΟΣΩΠΙΚΗΣ ΧΕΙΡΟΥΡΓΙΚΗΣ, ΟΔΟΝΤΙΑΤΡΙΚΗ ΣΧΟΛΗ, Α.Π.Θ. ΜΠΑΜΙΔΗΣ ΠΑΝΑΓΙΩΤΗΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ, ΤΟΜΕΑΣ ΙΑΤΡΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ, ΙΑΤΡΙΚΗ ΣΧΟΛΗ, Α.Π.Θ. EXAMINATION COMMITTEE: ANTONIADIS KONSTANTINOS, PROFESSOR, DIVISION OF ORAL AND MAXILLOFACIAL SURGERY, SCHOOL OF DENTISTRY, ARISTOTLE UNIVERSITY VAHTSEVANOS KONSTANTINOS, ASSISTANT PROFESSOR, DIVISION OF ORAL AND MAXILLOFACIAL SURGERY, SCHOOL OF DENTISTRY, ARISTOTLE UNIVERSITY BAMIDIS PANAGIOTIS, ASSISTANT PROFESSOR, DIVISION OF MEDICAL INFORMATICS, MEDICAL SCHOOL, ARISTOTLE UNIVERSITY ΠΕΡΙΛΗΨΗ Η χρησιμοποίηση του χαρτιού ως μέσο επικοινωνίας της ιατρικής πληροφορίας κυριάρχησε για πολλά χρόνια και συνεχίζει να επικρατεί λόγω της ευχρηστίας του. Η συσσώρευση όμως, παλαιών ιατρικών εγγράφων ταυτόχρονα με την πρόοδο της τεχνολογίας, δημιούργησε την ανάγκη της ψηφιοποίησής τους ώστε να είναι εφικτή η περαιτέρω επεξεργασία τους για εξαγωγή στατιστικών συμπερασμάτων και εξόρυξη νέας γνώσης. Στην παρούσα εργασία, μια συλλογή από 7,047 ιστολογικές αναφορές παρασκευασμάτων στοματογναθοπροσωπικής χειρουργικής, χρονολογίας από το 1995 έως το 2010, μετατράπηκαν σε ψηφιακά αρχεία κειμένου εφαρμόζοντας την τεχνική της οπτικής αναγνώρισης χαρακτήρων (OCR). Επιπλέον, εκτελώντας μακροεντολές VBA στα αρχεία κειμένου, διορθώθηκαν με μαζικό τρόπο τα σφάλματα αναγνώρισης χαρακτήρων της OCR. Στη συνέχεια αναπτύχθηκε ένα ειδικό εργαλείο λογισμικού στο περιβάλλον VB.NET 2010, το οποίο ονομάστηκε Dioscoride, σε σκοπό την αυτοματοποιημένη ανάγνωση των αναφορών και την εξαγωγή των πληροφοριών από καθεμία ξεχωριστά, σε ένα αρχείο κειμένου CSV. Τέτοιες πληροφορίες είναι τα στοιχεία του ασθενή, η ηλικία, το είδος του παρασκευάσματος και το αποτέλεσμα της βιοψίας. Η σχεδίαση του λογισμικού βασίστηκε στους κλασσικούς αλγόριθμους αναζήτησης προτύπων σε αρχεία κειμένου όπως ο brute force και ο Horspool. Τα πρότυπα αναζήτησης προσδιορίστηκαν μετά από μελέτη της δομής των ιστολογικών αναφορών. Ακολούθησε η σχεδίαση μιας κατάλληλης βάσης δεδομένων στο σύστημα MS SQL Server 2012 στην οποία εισήχθησαν όλα τα δεδομένα που εξήγαγε το πρόγραμμα Dioscoride. Το σχεσιακό μοντέλο της συγκεκριμένης βάσης επιτρέπει τη σύνθετη αναζήτηση στους πίνακες των δεδομένων με την κατάλληλη σύνταξη ερωτημάτων σε γλώσσα Transact SQL. Συμπερασματικά, η πλειονότητα των αρχικών εγγράφων της συλλογής (ποσοστό >99,9%) αναγνωρίστηκε μέσω OCR και τελικά καταχωρίστηκε στη βάση. Η μελλοντική χρησιμοποίηση τεχνικών εξόρυξης (data mining) στα δεδομένα θα οδηγήσει στην εξαγωγή σημαντικών συμπερασμάτων. Επίσης, η διαδικτυακή απελευθέρωση των δεδομένων σε μια web-based βάση, μετά από την ανωνυμοποίηση των αναφορών, θα αποτελέσει ένα χρήσιμο εκπαιδευτικό εργαλείο για ειδικευόμενους παθολογοανατόμους και στοματογναθοπροσωπικούς χειρουργούς. 7 ABSTRACT Paper had always been one of the basic means for communicating medical information and it is still dominant due to its usability. The archived medical paper-documents along with the advances of technology create the need for digitization, so that statistical analysis and data mining techniques can be feasible. Digital procession of large paper-based collections may lead to new knowledge gain. For this thesis, a collection of 7,047 histological reports were digitized and converted into text files using Optical Character Recognition (OCR) software. Misrecognized characters were fixed by applying appropriate VBA macros on the batch of the resulting documents. All reports came from the Oral and Maxillofacial Surgery Division of Theagenio Cancer Hospital and were dated from 1995 to 2010. For the next step, a special application called Dioscoride was developed in VB.NET 2010. This tool automatically opens and reads every digitized report and exports useful information into a comma-separatedvalue (CSV) file. Such information includes the patient’s name, age, the specimen’s type and the biopsy’s result. The implementation involved classical text-searching programming techniques, such as the brute-force and Horspool algorithms. Dioscoride searches for specific text-patterns inside each report. These patterns were defined after studying the structure of the documents. Finally, a database scheme was designed in MS SQL Server 2012 and, finally, the CSV file was imported in the database’s tables. This scheme consists of entities and relationships that allow complex searching throughout the records, using Transact SQL queries. In conclusion, the majority of the histological reports (>99,9%) were OCR-processed and imported into the database. Statistical analysis and data mining techniques are going to be applied as a future work, and are expected to reveal correlations and new knowledge. Furthermore, a web version of the database, containing anonymized reports, will aid as an educational tool for Maxillofacial Surgery and Anatomic Pathology trainees. 8 ΕΥΧΑΡΙΣΤΙΕΣ Αισθάνομαι την ανάγκη να ευχαριστήσω τον επίκουρο καθηγητή της Ιατρικής κ. Παναγιώτη Μπαμίδη, επιβλέποντα της εργασίας μου, που μου έδωσε την ευκαιρία να ασχοληθώ με το ενδιαφέρον αυτό θέμα το οποίο απαιτεί συνδυασμό γνώσεων από τα πεδία των δύο ειδικοτήτων μου, δηλαδή της Οδοντιατρικής και της Πληροφορικής. Επίσης τον ευχαριστώ για την καθοδήγηση και την κατανόηση. Επίσης θα ήθελα να ευχαριστήσω τον επίκουρο καθηγητή της Οδοντιατρικής κ. Βαχτσεβάνο Κωνσταντίνο για την καθοδήγηση, βοήθεια και συμπαράσταση καθ’ όλη τη διάρκεια της εκπόνησης αυτής της εργασίας. Ευχαριστώ ακόμη τον καθηγητή της Οδοντιατρικής κ. Αντωνιάδη Κωνσταντίνο. Τέλος ευχαριστώ την οικογένειά μου για τη συνεχή υποστήριξη. Μάιος 2013 Λάζαρος Παπαδόπουλος Οδοντίατρος, Πληροφορικός 9 ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΛΗΨΗ ......................................................................................................................................... 7 ABSTRACT .......................................................................................................................................... 8 ΕΥΧΑΡΙΣΤΙΕΣ ....................................................................................................................................... 9 ΠΕΡΙΕΧΟΜΕΝΑ ................................................................................................................................. 10 ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ............................................................................................................................ 13 ΛΙΣΤΑ ΠΙΝΑΚΩΝ ............................................................................................................................... 15 1. ΕΙΣΑΓΩΓΗ ...................................................................................................................................... 17 1.1 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΕΡΕΥΝΗΤΙΚΟΥ ΠΡΟΒΛΗΜΑΤΟΣ ........................................................................................ 18 1.2 ΔΟΜΗΣΗ ΤΗΣ ΕΡΓΑΣΙΑΣ ....................................................................................................................... 19 2. ΒΙΒΛΙΟΓΡΑΦΙΚΗ ΑΝΑΣΚΟΠΗΣΗ .................................................................................................... 20 2.1 ΒΙΒΛΙΟΓΡΑΦΙΚΗ ΑΝΑΣΚΟΠΗΣΗ.............................................................................................................. 22 2.2 ΣΤΟΜΑΤΙΚΗ ΚΑΙ ΓΝΑΘΟΠΡΟΣΩΠΙΚΗ ΧΕΙΡΟΥΡΓΙΚΗ ..................................................................................... 26 2.2.1 Ορισμοί ................................................................................................................................. 26 2.2.2 Αντικείμενο της ΣΓΠΧ ............................................................................................................ 26 2.3 ΣΑΡΩΣΗ ΕΓΓΡΑΦΩΝ ΚΑΙ ΟΠΤΙΚΗ ΑΝΑΓΝΩΡΙΣΗ ΧΑΡΑΚΤΗΡΩΝ........................................................................ 27 2.3.1 Ο σαρωτής ............................................................................................................................ 27 2.3.2 Οπτική αναγνώριση χαρακτήρων ......................................................................................... 27 1. 2. 3. 4. Συσχέτιση για την αναγνώριση μονού χαρακτήρα .......................................................................... 27 Συσχέτιση για αναγνώριση χαρακτήρα συνεχούς τύπου ................................................................ 28 Τεχνικές εξαγωγής των ιδιαίτερων χαρακτηριστικών του χαρακτήρα ............................................ 29 Αναγνώριση χαρακτήρων με νευρωνικά δίκτυα ............................................................................. 29 2.3.3 Αδυναμίες και προβλήματα .................................................................................................. 33 2.3.4 Δυνατότητες βελτίωσης της OCR .......................................................................................... 34 2.4 ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ........................................................................................................ 35 2.4.1 Εισαγωγή .............................................................................................................................. 35 2.4.2 Ασφάλεια ιατρικών βάσεων δεδομένων .............................................................................. 35 2.4.3 Εξόρυξη δεδομένων .............................................................................................................. 36 2.5 ΑΝΑΖΗΤΗΣΗ ΠΛΗΡΟΦΟΡΙΑΣ ΣΕ ΑΡΧΕΙΑ ΚΕΙΜΕΝΟΥ .................................................................................... 38 2.5.1 Αλγόριθμος ωμής βίας .......................................................................................................... 38 2.5.2 Αλγόριθμος Horspool ............................................................................................................ 38 3. ΜΕΘΟΔΟΙ ΚΑΙ ΥΛΙΚΑ .................................................................................................................... 43 3.1 ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΑΡΧΕΙΩΝ ................................................................................................................... 44 3.2 ΛΟΓΙΣΜΙΚΑ OCR ............................................................................................................................... 49 3.2.1 Η μηχανή Tesseract ............................................................................................................... 49 10 3.2.2 ABBYY Fine Reader ................................................................................................................ 50 3.2.3 Nuance OmniPage ................................................................................................................ 52 3.2.4 Πειραματική σύγκριση των τριών λογισμικών ..................................................................... 53 4. ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ......................................................................................................... 55 4.1 ΑΝΑΠΤΥΞΗ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΑΝΑΚΑΛΥΨΗΣ ΠΕΔΙΩΝ .................................................................................. 56 4.1.1 Το Visual Studio..................................................................................................................... 56 4.1.2 Το .NET Framework ............................................................................................................... 56 4.1.3 Η βιβλιοθήκη κλάσεων του .NET Framework ....................................................................... 56 4.1.4 Component Object Model ..................................................................................................... 57 4.1.5 Office Primary Interop Assemblies ........................................................................................ 57 4.1.6 Λεπτομέρειες υλοποίησης .................................................................................................... 58 4.1.7 Dioscoride ............................................................................................................................. 61 4.2 ΕΠΙΛΟΓΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΤΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ ................................................................ 62 4.2.1 Microsoft SQL Server ............................................................................................................. 62 4.2.2 MySQL ................................................................................................................................... 62 4.2.3 Σύγκριση μεταξύ των δύο DBMS και επιλογή ...................................................................... 63 4.3 ΣΧΕΔΙΑΣΗ ΤΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ........................................................................................................ 65 4.3.1 Ορισμός του μοντέλου συσχετίσεων .................................................................................... 65 4.3.2 Μετατροπή του μοντέλου συσχετίσεων σε σχεσιακό .......................................................... 66 4.3.3 Περιορισμοί ακεραιότητας (Integrity Constraints) ............................................................... 67 4.3.4 Το περιβάλλον MS SQL Server Management Studio ............................................................ 68 4.3.5 Δημιουργία των πινάκων της ΒΔ .......................................................................................... 68 4.3.6 Ασφαλής σχεδιασμός............................................................................................................ 71 5. ΑΠΟΤΕΛΕΣΜΑΤΑ .......................................................................................................................... 73 5.1 ΟΠΤΙΚΗ ΑΝΑΓΝΩΡΙΣΗ ΧΑΡΑΚΤΗΡΩΝ ΚΑΙ ΕΠΑΛΗΘΕΥΣΗ ............................................................................... 74 5.1.1 Εκπαίδευση του λογισμικού OCR ......................................................................................... 74 5.1.2 Δημιουργία λεξικού .............................................................................................................. 76 5.1.3 Έλεγχος και επαλήθευση ...................................................................................................... 77 5.2 ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΜΕ ΜΑΚΡΟΕΝΤΟΛΕΣ VBA ........................................................................................... 78 5.3 ΑΠΟΤΕΛΕΣΜΑΤΑ ΤΗΣ ΕΦΑΡΜΟΓΗΣ DIOSCORIDE ....................................................................................... 80 5.4 ΕΙΣΑΓΩΓΗ ΣΤΗ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ......................................................................................................... 82 5.4.1 Εισαγωγή δεδομένων στον πίνακα Patients......................................................................... 82 5.4.2 Εισαγωγή δεδομένων στον πίνακα Reports ......................................................................... 83 5.4.3 Εισαγωγή δεδομένων Contains και Specimens .................................................................... 84 5.4.4 Παράδειγμα εισαγωγής δεδομένων στη βάση με εντολές SQL ........................................... 87 5.5 ΥΠΟΒΟΛΗ ΕΡΩΤΗΜΑΤΩΝ ΣΕ TRANSACT-SQL .......................................................................................... 88 Περίπτωση 1 .................................................................................................................................. 88 Περίπτωση 2 .................................................................................................................................. 89 Περίπτωση 3 .................................................................................................................................. 89 Περίπτωση 4 .................................................................................................................................. 90 Περίπτωση 5 .................................................................................................................................. 90 6. ΣΥΖΗΤΗΣΗ - ΣΥΜΠΕΡΑΣΜΑΤΑ ...................................................................................................... 93 6.1 ΣΗΜΑΣΙΑ ΤΗΣ ΕΡΕΥΝΑΣ ....................................................................................................................... 94 6.2 ΠΕΡΙΟΡΙΣΜΟΙ ΚΑΙ ΜΕΛΛΟΝΤΙΚΕΣ ΕΠΕΚΤΑΣΕΙΣ ........................................................................................... 94 6.3 ΣΥΜΠΕΡΑΣΜΑΤΑ ............................................................................................................................... 96 11 ΑΝΑΦΟΡΕΣ ...................................................................................................................................... 98 ΠΑΡΑΡΤΗΜΑΤΑ ............................................................................................................................. 103 ΠΑΡΑΡΤΗΜΑ Ι. ΚΩΔΙΚΑΣ DIOSCORIDE ....................................................................................................... 104 ΠΑΡΑΡΤΗΜΑ ΙΙ. ΜΑΚΡΟΕΝΤΟΛΕΣ VBA ..................................................................................................... 112 ΠΑΡΑΡΤΗΜΑ ΙΙΙ. ΚΩΔΙΚΑΣ ΚΑΤΗΓΟΡΙΟΠΟΙΗΤΗ ............................................................................................. 116 ΠΑΡΑΡΤΗΜΑ IV. ΑΠΟΤΕΛΕΣΜΑΤΑ ΠΕΙΡΑΜΑΤΙΚΗΣ ΣΥΓΚΡΙΣΗΣ ΤΩΝ ΤΡΙΩΝ ΛΟΓΙΣΜΙΚΩΝ OCR ................................. 117 ΠΑΡΑΡΤΗΜΑ V. ΕΙΔΙΚΟΙ ΟΡΟΙ ΠΟΥ ΑΝΑΚΑΛΥΦΘΗΚΑΝ ΚΑΤΑ ΤΟ PROOF READING ............................................... 123 ΑΚΡΩΝΥΜΑ ................................................................................................................................... 129 ΓΛΩΣΣΑΡΙ ....................................................................................................................................... 131 ΕΥΡΕΤΗΡΙΟ ΟΡΩΝ .......................................................................................................................... 133 12 ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ ΕΙΚΟΝΑ 1. ΥΠΟΛΟΓΙΣΤΗΣ ΤΗΣ MONROE ΜΕ ΜΕΓΕΘΟΣ ΟΣΟ ΕΝΑ ΓΡΑΦΕΙΟ, ΜΑΓΝΗΤΙΚΗ ΜΝΗΜΗ ΤΥΜΠΑΝΟΥ ΚΑΙ ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΜΕΣΩ ΧΑΡΤΙΝΗΣ ΤΑΙΝΙΑΣ. (1960) ........................................................................................ 23 ΕΙΚΟΝΑ 2. ΨΗΦΙΟΠΟΙΗΣΗ-ΜΕΤΑΤΡΟΠΗ ΣΕ ΔΙΤΟΝΙΚΗ ΕΙΚΟΝΑ. ............................................................................. 28 ΕΙΚΟΝΑ 3. ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΚΑΙ SMOOTHING.................................................................................................. 28 ΕΙΚΟΝΑ 4. ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ FOURIER ΓΙΑ ΤΟ ΧΑΡΑΚΤΗΡΑ 3. ........................................................................... 29 ΕΙΚΟΝΑ 5. ΝΕΥΡΩΝΑΣ ΠΟΥ ΥΛΟΠΟΙΕΙ ΤΗ ΛΟΓΙΚΗ ΠΡΑΞΗ AND. ............................................................................. 30 ΕΙΚΟΝΑ 6. ΝΕΥΡΩΝΙΚΟ ΔΙΚΤΥΟ ΜΕ ΕΝΑ ΕΝΔΙΑΜΕΣΟ (ΚΡΥΦΟ) ΕΠΙΠΕΔΟ, ΜΙΑ ΕΙΣΟΔΟ ΚΑΙ ΠΟΛΛΕΣ ΕΞΟΔΟΥΣ. .................. 30 ΕΙΚΟΝΑ 7. ΈΝΑ ΤΝΔ ΜΕ ΕΙΣΟΔΟ ΔΕΔΟΜΕΝΑ ΕΙΚΟΝΑΣ ΚΑΙ ΕΞΟΔΟ ΚΕΙΜΕΝΟ UNICODE. ........................................... 32 ΕΙΚΟΝΑ 8. ΧΡΗΣΗ ΝΕΥΡΩΝΙΚΟΥ ΔΙΚΤΥΟΥ ΣΤΗΝ OCR. ΑΠΟ ΑΡ ΠΡΟΣ ΤΑ ΔΕ: ΣΑΡΩΣΗ, ΤΜΗΜΑΤΟΠΟΙΗΣΗ, ΨΗΦΙΟΠΟΙΗΣΗ, ΕΙΣΑΓΩΓΗ ΣΤΟ ΤΝΔ, ΑΝΑΓΝΩΡΙΣΗ ΜΕ BACK PROPAGATION, ΔΗΜΙΟΥΡΓΙΑ ΚΕΙΜΕΝΟΥ. ........................................ 32 ΕΙΚΟΝΑ 9. ΠΑΡΑΔΕΙΓΜΑ ΚΕΙΜΕΝΟΥ ΧΑΜΗΛΗΣ ΑΝΤΙΘΕΣΗΣ. «ΚΛΙΝΙΚΗ». Η OCR ΑΝΑΓΝΩΡΙΖΕΙ: « ΚΛΙ\ΙΙ-ΙΙ » .................. 33 ΕΙΚΟΝΑ 10. ΕΚΤΥΠΩΣΗ ΜΕ ΠΟΛΥ ΜΕΛΑΝΙ. «ΣΠΙΛΟΥ». Η OCR ΑΝΑΓΝΩΡΙΖΕΙ: « ΟΤΤΙΛΩΥ » ........................................ 33 ΕΙΚΟΝΑ 11. ΑΝΑΖΗΤΗΣΗ ΜΕ ΜΕΤΑΤΟΠΙΣΗ ΜΙΑΣ ΘΕΣΗΣ ΠΡΟΣ ΤΑ ΔΕΞΙΑ ΤΗ ΦΟΡΑ. .................................................... 38 ΕΙΚΟΝΑ 12. ΈΝΑΡΞΗ ΑΝΑΖΗΤΗΣΗΣ ΑΠΟ ΤΑ ΑΡΙΣΤΕΡΑ. ......................................................................................... 39 ΕΙΚΟΝΑ 13. ΜΕΤΑΤΟΠΙΣΗ ΙΣΗ ΜΕ ΤΟ ΜΗΚΟΣ ΕΝΟΣ ΠΡΟΤΥΠΟΥ ............................................................................. 39 ΕΙΚΟΝΑ 14. ΜΕΤΑΤΟΠΙΣΗ ΤΟΥ ΠΡΟΤΥΠΟΥ ΓΙΑ ΣΤΟΙΧΙΣΗ ΤΩΝ ΔΥΟ «Β» ................................................................... 39 ΕΙΚΟΝΑ 15. ΔΕΝ ΥΠΑΡΧΕΙ «Π» ΜΕΣΑ ΣΤΟ ΠΡΟΤΥΠΟ. Η ΜΕΤΑΤΟΠΙΣΗ ΕΙΝΑΙ ΙΣΗ ΜΕ ΤΟ ΜΗΚΟΣ ΤΟΥ ΠΡΟΤΥΠΟΥ. ............. 40 ΕΙΚΟΝΑ 16. ΤΟ «Ι» ΔΕΝ ΤΑΙΡΙΑΖΕΙ ΜΕ ΤΟ «Β». ΤΟ ΠΡΟΤΥΠΟ ΣΤΟΙΧΙΖΕΤΑΙ ΣΤΟ «Β». ............................................... 40 ΕΙΚΟΝΑ 17. ΤΡΟΠΟΣ ΥΠΟΛΟΓΙΣΜΟΥ ΤΩΝ ΜΕΤΑΤΟΠΙΣΕΩΝ ΤΟΥ ΠΡΟΤΥΠΟΥ .............................................................. 40 ΕΙΚΟΝΑ 18. ΑΝΑΖΗΤΗΣΗ ΤΟΥ STRING ΗΜ/ΝΙΑ ΜΕΣΑ ΣΕ ΜΙΑ ΠΡΟΤΑΣΗ ΜΕ ΤΟΝ ΑΛΓΟΡΙΘΜΟ HORSPOOL..................... 41 ΕΙΚΟΝΑ 19. ΔΕΙΓΜΑ ΙΣΤΟΛΟΓΙΚΗΣ ΑΝΑΦΟΡΑΣ. ΜΕ ΒΕΛΗ ΣΗΜΑΙΝΟΝΤΑΙ ΤΑ ΠΕΔΙΑ ΕΝΔΙΑΦΕΡΟΝΤΟΣ. ........................... 47 ΕΙΚΟΝΑ 20. ΔΕΙΓΜΑ ΑΝΑΦΟΡΑΣ ΚΥΤΤΑΡΟΛΟΓΙΚΗΣ ΕΞΕΤΑΣΗΣ. ΜΕ ΒΕΛΗ ΣΗΜΑΙΝΟΝΤΑΙ ΤΑ ΠΕΔΙΑ ΕΝΔΙΑΦΕΡΟΝΤΟΣ......... 48 ΕΙΚΟΝΑ 21.VIET-OCR. ΟΠΤΙΚΗ ΑΝΑΓΝΩΡΙΣΗ ΜΕ ΤΟ ΕΛΛΗΝΙΚΟ TRAINING-FILE ΤΗΣ TESSERACT.................................. 50 ΕΙΚΟΝΑ 22. ΕΚΠΑΙΔΕΥΣΗ ΣΤΟ JTESSEDITOR ...................................................................................................... 50 ΕΙΚΟΝΑ 23. TRAINING FILE ΣΤΟ FINE READER. ΑΠΟΘΗΚΕΥΜΕΝΕΣ ΕΙΚΟΝΕΣ ΧΑΡΑΚΤΗΡΩΝ ΜΕ ΤΗΝ ΕΡΜΗΝΕΙΑ ΤΟΥΣ. ........ 51 ΕΙΚΟΝΑ 24. ΔΗΜΙΟΥΡΓΙΑ ΞΕΧΩΡΙΣΤΟΥ ΛΕΞΙΚΟΥ ΜΕ ΙΣΤΟΛΟΓΙΚΟΥΣ ΟΡΟΥΣ................................................................ 52 ΕΙΚΟΝΑ 25. PROOF-READING ΣΤΟ OMNIPAGE. ΤΟ ΠΡΟΓΡΑΜΜΑ ΣΗΜΑΙΝΕΙ ΚΟΚΚΙΝΕΣ ΤΙΣ ΛΕΞΕΙΣ ΠΟΥ ΔΕΝ ΑΝΑΓΝΩΡΙΖΕΙ. . 53 ΕΙΚΟΝΑ 26. ΠΡΟΣΘΗΚΗ REFERENCE ΓΙΑ ΔΙΑΣΥΝΔΕΣΗ ΜΕ ΤΟ OFFICE. ...................................................................... 57 ΕΙΚΟΝΑ 27. ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΤΗΣ ΑΝΑΦΟΡΑΣ ΜΕ PATTERNS ............................................................................. 60 ΕΙΚΟΝΑ 28. ΑΡΧΕΙΟ CSV. ΟΙ ΤΙΜΕΣ ΧΩΡΙΖΟΝΤΑΙ ΜΕΤΑΞΥ ΤΟΥΣ ΜΕ ΚΟΜΜΑ. ........................................................... 60 ΕΙΚΟΝΑ 29. DIOSCORIDE VERSION 1.0. ΔΙΕΠΑΦΗ (ΠΑΝΩ) ΚΑΙ ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ (ΚΑΤΩ). ..................................... 61 ΕΙΚΟΝΑ 31. ΕΓΚΑΤΑΣΤΑΣΗ ΤΟΥ MS SQL SERVER 2012. ..................................................................................... 64 ΕΙΚΟΝΑ 32. ΔΙΑΓΡΑΜΜΑ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ. ER DIAGRAM .................................................................... 66 ΕΙΚΟΝΑ 33. ΤΟ ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΤΗΣ ΒΔ .................................................................................................... 66 ΕΙΚΟΝΑ 34. ΔΗΜΙΟΥΡΓΙΑ ΝΕΑΣ ΒΔ. ................................................................................................................ 68 ΕΙΚΟΝΑ 35. ΔΟΜΗ ΠΙΝΑΚΑ PATIENTS.............................................................................................................. 68 ΕΙΚΟΝΑ 36. ΔΟΜΗ ΠΙΝΑΚΑ REPORTS. ............................................................................................................. 69 ΕΙΚΟΝΑ 37. ΔΟΜΗ ΠΙΝΑΚΑ SPECIMENS ........................................................................................................... 69 ΕΙΚΟΝΑ 38. ΔΟΜΗ ΤΟΥ ΠΙΝΑΚΑ ΣΥΣΧΕΤΙΣΕΩΝ CONTAIN. ..................................................................................... 69 ΕΙΚΟΝΑ 39. ΔΗΜΙΟΥΡΓΙΑ ΤΩΝ FOREIGN KEYS. ................................................................................................... 70 13 ΕΙΚΟΝΑ 40. ΤΟ ΔΙΑΓΡΑΜΜΑ ΤΗΣ ΒΔ ORALMAXFAC. ......................................................................................... 70 ΕΙΚΟΝΑ 41. ΕΝΤΟΛΕΣ SQL ΓΙΑ ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΩΝ. .......................................................................................... 71 ΕΙΚΟΝΑ 42. ΡΥΘΜΙΣΕΙΣ ΕΠΙΛΟΓΩΝ ΑΝΑΓΝΩΣΗΣ ΤΩΝ ΕΓΓΡΑΦΩΝ ΓΙΑ ΕΚΠΑΙΔΕΥΣΗ. ..................................................... 75 ΕΙΚΟΝΑ 43. TRAINING ΣΤΗΝ ΑΝΑΓΝΩΡΙΣΗ ΧΑΡΑΚΤΗΡΩΝ...................................................................................... 75 ΕΙΚΟΝΑ 44. PROOF READING: ΤΟ ΠΡΟΓΡΑΜΜΑ ΕΝΤΟΠΙΖΕΙ ΤΟΥΣ ΑΓΝΩΣΤΟΥΣ ΟΡΟΥΣ. ................................................ 76 ΕΙΚΟΝΑ 45. ΨΕΥΔΟΚΩΔΙΚΑΣ ΓΙΑ ΕΥΡΕΣΗ ΚΑΙ ΑΝΤΙΚΑΤΑΣΤΑΣΗ ΚΕΙΜΕΝΟΥ ΣΕ ΟΛΑ ΤΑ ΑΡΧΕΙΑ ΕΝΟΣ ΦΑΚΕΛΟΥ. .................. 79 ΕΙΚΟΝΑ 46. DIOSCORIDE: ΕΠΙΛΟΓΗ ΤΟΥ ΦΑΚΕΛΟΥ ΠΟΥ ΠΕΡΙΕΧΕΙ ΤΙΣ ΑΝΑΦΟΡΕΣ. ..................................................... 80 ΕΙΚΟΝΑ 47. ΤΟ ΠΡΟΓΡΑΜΜΑ ΣΕ ΛΕΙΤΟΥΡΓΙΑ ΓΙΑ ΤΟ ΦΑΚΕΛΟ ΤΩΝ ΑΝΑΦΟΡΩΝ ΤΟΥ 2010. ......................................... 80 ΕΙΚΟΝΑ 48. ΕΙΣΑΓΩΓΗ ΤΩΝ ΑΡΧΕΙΩΝ CSV ΣΕ ΛΟΓΙΣΤΙΚΟ ΦΥΛΛΟ. ΤΑ ΕΠΩΝΥΜΑ ΕΧΟΥΝ ΚΡΥΦΤΕΙ ΣΚΟΠΙΜΑ. .................... 81 ΕΙΚΟΝΑ 49. ΕΠΙΛΟΓΗ REMOVE DUPLICATES ΣΤΟ EXCEL. ...................................................................................... 82 ΕΙΚΟΝΑ 50. ΠΑΡΑΔΕΙΓΜΑ ΔΙΠΛΟΤΥΠΩΝ ΤΟΥ ΙΔΙΟΥ ΑΣΘΕΝΗ ΜΕ ΟΡΘΟΓΡΑΦΙΚΑ ΛΑΘΗ ΣΤΟ ΟΝΟΜΑΤΕΠΩΝΥΜΟ.............. 82 ΕΙΚΟΝΑ 51. ΕΙΣΑΓΩΓΗ ΤΟΥ PATIENTS.CSV ΣΤΗ ΒΑΣΗ........................................................................................... 83 ΕΙΚΟΝΑ 52. ΤΑ ΔΕΔΟΜΕΝΑ ΣΕ ΜΟΡΦΗ COMMA DELIMITED VALUES. .................................................................... 83 ΕΙΚΟΝΑ 53. ΕΙΣΑΓΩΓΗ ΤΟΥ REPORTS.CSV ΣΤΟΝ ΑΝΤΙΣΤΟΙΧΟ ΠΙΝΑΚΑ. .................................................................... 83 ΕΙΚΟΝΑ 54. ΨΕΥΔΟΚΩΔΙΚΑΣ ΤΟΥ ΚΑΤΗΓΟΡΙΟΠΟΙΗΤΗ .......................................................................................... 84 ΕΙΚΟΝΑ 55. ΤΟ ΠΡΟΒΛΗΜΑ ΤΗΣ ΠΟΙΚΙΛΟΜΟΡΦΙΑΣ ΣΤΗ ΓΡΑΦΗ ΤΩΝ ΠΑΡΑΣΚΕΥΑΣΜΑΤΩΝ. ΈΝΑ ΠΑΡΑΣΚΕΥΑΣΜΑ ΠΑΡΟΥΣΙΑΖΕΙ ΠΟΛΛΟΥΣ ΔΙΑΦΟΡΕΤΙΚΟΥΣ ΤΙΤΛΟΥΣ. ...................................................................................... 85 ΕΙΚΟΝΑ 56. ΕΝΘΟΡΥΒΑ ΔΕΔΟΜΕΝΑ ΣΤΟΥΣ ΤΙΤΛΟΥΣ ΠΑΡΑΣΚΕΥΑΣΜΑΤΩΝ. Ο ΘΟΡΥΒΟΣ/ΠΛΕΟΝΑΣΜΟΣ ΣΗΜΕΙΩΝΕΤΑΙ ΜΕ ΚΟΚΚΙΝΗ ΓΡΑΜΜΑΤΟΣΕΙΡΑ.................................................................................................................... 85 ΕΙΚΟΝΑ 57. ΑΥΤΟΜΑΤΗ ΑΝΑΘΕΣΗ ΚΩΔΙΚΩΝ ΣΤΑ ΕΙΔΗ ΠΑΡΑΣΚΕΥΑΣΜΑΤΩΝ (ΔΕΙΓΜΑ ΑΠΟ ΤΟ ΦΥΛΛΟ). ΤΑ ΕΙΔΗ ΜΕ ΤΟ ΙΔΙΟ ΟΝΟΜΑ ΠΑΙΡΝΟΥΝ ΤΟΝ ΙΔΙΟ ΚΩΔΙΚΟ. ..................................................................................................... 86 ΕΙΚΟΝΑ 58. ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΣΤΟΥΣ ΠΙΝΑΚΕΣ SPECIMENS , CONTAIN ΑΠΟ ΤΑ ΑΝΤΙΣΤΟΙΧΑ ΑΡΧΕΙΑ. ....................... 86 ΕΙΚΟΝΑ 59. ΕΝΤΟΛΕΣ SQL ΓΙΑ ΕΜΦΑΝΙΣΗ ΤΩΝ ΜΕΓΕΘΩΝ ΤΩΝ ΠΙΝΑΚΩΝ. .............................................................. 86 ΕΙΚΟΝΑ 60. ΤΕΛΙΚΑ ΜΕΓΕΘΗ ΤΩΝ ΠΙΝΑΚΩΝ ΤΗΣ ΒΔ. .......................................................................................... 87 ΕΙΚΟΝΑ 61. ΥΠΟΘΕΤΙΚΗ ΑΝΑΦΟΡΑ ΓΙΑ ΕΙΣΑΓΩΓΗ ΣΤΗ ΒΑΣΗ. ................................................................................. 87 ΕΙΚΟΝΑ 62. ΕΝΤΟΛΕΣ SQL ΓΙΑ ΕΙΣΑΓΩΓΗ ΣΤΗ ΒΑΣΗ. ........................................................................................... 87 ΕΙΚΟΝΑ 63. ΑΝΑΖΗΤΗΣΗ ΤΩΝ ΗΛΙΚΙΩΝ ΣΤΙΣ ΟΠΟΙΕΣ ΤΟ ΕΙΔΟΣ ΠΑΡΑΣΚΕΥΑΣΜΑΤΟΣ ΗΤΑΝ "ΕΠΙΘΗΛΙΩΜΑ ΕΣΩ ΚΑΝΘΟΥ" ... 88 ΕΙΚΟΝΑ 64. ΑΠΟΤΕΛΕΣΜΑ. ΗΛΙΚΙΑ, ΕΙΔΟΣ ΠΑΡΑΣΚΕΥΑΣΜΑΤΟΣ, ID ΠΑΡΑΣΚΕΥΑΣΜΑΤΟΣ ............................................ 88 ΕΙΚΟΝΑ 65. ΤΟ ΕΡΩΤΗΜΑ SQL ΜΕ ΧΡΗΣΗ INNER JOIN........................................................................................ 89 ΕΙΚΟΝΑ 66. ΒΡΕΘΗΚΑΝ 8 ΕΓΓΡΑΦΕΣ ΜΕ ΤΑ ΑΠΑΙΤΟΥΜΕΝΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ. .......................................................... 89 ΕΙΚΟΝΑ 67. ΔΗΜΙΟΥΡΓΙΑ FULL-TEXT INDEX ΚΑΙ ΑΝΑΖΗΤΗΣΗ CONTAINS. .............................................................. 89 ΕΙΚΟΝΑ 68. ΑΠΟΤΕΛΕΣΜΑ ΑΝΑΖΗΤΗΣΗΣ MALHERBE. ......................................................................................... 90 ΕΙΚΟΝΑ 69. ΑΝΑΖΗΤΗΣΗ ΜΕ ΧΡΗΣΗ FREETEXT................................................................................................ 90 ΕΙΚΟΝΑ 70. ΑΠΟΤΕΛΕΣΜΑΤΑ: ΒΡΕΘΗΚΑΝ ΠΕΝΤΕ ΠΕΡΙΣΤΑΤΙΚΑ ΜΕΛΑΝΩΜΑΤΟΣ ΣΕ ΑΤΟΜΑ ΗΛΙΚΙΑΣ<40. ...................... 90 ΕΙΚΟΝΑ 71. ΑΝΑΖΗΤΗΣΗ ΜΕ ΧΡΗΣΗ AVG, COUNT ΚΑΙ INNER JOIN. ..................................................................... 90 ΕΙΚΟΝΑ 72. ΠΕΝΗΝΤΑ ΑΤΟΜΑ ΕΜΦΑΝΙΣΑΝ ΤΟ ΣΥΓΚΕΚΡΙΜΕΝΟ ΤΥΠΟ ΚΑΡΚΙΝΟΥ ΚΑΙ Η ΜΕΣΗ ΗΛΙΚΙΑ ΤΟΥΣ ΗΤΑΝ 70 ΕΤΗ... 91 ΕΙΚΟΝΑ 73. ΔΕΙΓΜΑ ΕΚΤΥΠΩΣΗΣ LASER/INKJET ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΕ ΣΤΗ ΣΥΓΚΡΙΣΗ ΤΩΝ ΛΟΓΙΣΜΙΚΩΝ OCR ............ 117 ΕΙΚΟΝΑ 74. ΔΕΙΓΜΑ ΕΚΤΥΠΩΣΗΣ DOT MATRIX ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΕ ΣΤΗ ΣΥΓΚΡΙΣΗ ΤΩΝ ΛΟΓΙΣΜΙΚΩΝ OCR ............. 118 ΕΙΚΟΝΑ 75. ΑΠΟΤΕΛΕΣΜΑΤΑ ΜΕΤΑΤΡΟΠΗΣ ΜΕ ΤΟ OMNIPAGE. ......................................................................... 119 ΕΙΚΟΝΑ 76. ΑΠΟΤΕΛΕΣΜΑΤΑ ΜΕΤΑΤΡΟΠΗΣ ΜΕ ΤΟ TESSERACT VIET-OCR ........................................................... 120 ΕΙΚΟΝΑ 77. ΑΠΟΤΕΛΕΣΜΑΤΑ ΜΕΤΑΤΡΟΠΗΣ ΜΕ ΤΟ ABBY FINE READER............................................................... 122 14 ΛΙΣΤΑ ΠΙΝΑΚΩΝ ΠΙΝΑΚΑΣ 1. ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΩΝ ΣΑΡΩΜΕΝΩΝ ΑΡΧΕΙΩΝ. ................................................................................... 44 ΠΙΝΑΚΑΣ 2. ΣΥΓΚΡΙΣΗ ΑΡΙΘΜΟΥ ΣΦΑΛΜΑΤΩΝ ΑΝΑ ΔΕΙΓΜΑ ΑΝΑ ΠΡΟΓΡΑΜΜΑ. ........................................................ 53 ΠΙΝΑΚΑΣ 3. ΤΑ ΠΡΟΤΥΠΑ ΑΝΑΖΗΤΗΣΗΣ ΚΑΙ ΤΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥΣ. .................................................................... 59 ΠΙΝΑΚΑΣ 4. ΠΑΡΑΔΕΙΓΜΑΤΑ ΣΥΧΝΩΝ ΣΦΑΛΜΑΤΩΝ ΤΗΣ OCR. ΤΟ “?” ΔΗΛΩΝΕΙ ΜΙΑ ΠΟΙΚΙΛΟΜΟΡΦΙΑ ΣΤΗΝ ΕΜΦΑΝΙΣΗ ΤΩΝ ΧΑΡΑΚΤΗΡΩΝ ΣΤΗ ΣΥΓΚΕΚΡΙΜΕΝΗ ΘΕΣΗ, ΔΗΛΑΔΗ ΠΟΛΛΑΠΛΕΣ ΕΚΔΟΧΕΣ ΤΗΣ ΛΕΞΗΣ. ......................................... 78 15 1. ΕΙΣΑΓΩΓΗ 17 1.1 Περιγραφή του ερευνητικού προβλήματος Στη σημερινή εποχή οι ηλεκτρονικοί υπολογιστές (Η/Υ) είναι τα κυρίαρχα εργαλεία δημιουργίας και αποθήκευσης ιατρικών πληροφοριών και δεδομένων. Παρόλα αυτά, η επικοινωνία μεταξύ των ιατρών ή του ιατρού με τους ασθενείς του, εξακολουθεί να στηρίζεται σε έγγραφα με τη μορφή χαρτιού, τα οποία μπορεί να είναι χειρόγραφα ή εκτυπωμένα. Παραδείγματα τέτοιων εγγράφων είναι τα αποτελέσματα των εξετάσεων αίματος, τα διάφορα παραπεμπτικά, οι συνταγές, τα εξιτήρια, τα αποτελέσματα ιστολογικών ή κυτταρολογικών εξετάσεων, ακόμη και τα πιστοποιητικά θανάτου. Το χαρτί παραμένει ένα εύχρηστο μέσο για τη μετάδοση ιατρικών πληροφοριών και εκπληρώνει καλά το σκοπό του. Το πρόβλημα όμως αρχίζει να διαφαίνεται όταν με το χρόνο, συγκεντρώνεται ένας μεγάλος αριθμός τέτοιων έγγραφων τα οποία πρέπει να αποθηκευτούν ή να υποστούν κάποιου είδους επεξεργασία. Είναι σημαντικό να σημειωθεί ότι η συσσώρευση πολλών ιατρικών εξετάσεων ενός πληθυσμού ατόμων σε μία συγκεκριμένη χρονική περίοδο είναι ισοδύναμη με συσσώρευση γνώσης και εμπειρίας. Από τη μελέτη τέτοιων συλλογών μπορούν να προκύψουν πολύ χρήσιμα συμπεράσματα, ακόμη και να τροποποιηθούν ισχύουσες αντιλήψεις. Η στατιστική μελέτη και η ανακάλυψη γνώσης είναι δύο επιστημονικές μέθοδοι οι οποίες μπορούν να εφαρμοστούν σε τέτοιες συλλογές με την προϋπόθεση, βέβαια, της πλήρους καταγραφής και ταξινόμησης των εγγράφων. Αν και θεωρητικά, αυτό μπορεί να γίνει χειροκίνητα, η σύγχρονη τεχνολογία παρέχει τα απαραίτητα εργαλεία για την επιτάχυνση της όλης διαδικασίας. Η εισαγωγή των δεδομένων μέσα σε έναν Η/Υ διευκολύνει την εξαγωγή συμπερασμάτων και μειώνει το συνολικό χρόνο της ανθρώπινης εργασίας. Το αντικείμενο της εργασίας αυτής ήταν η μετατροπή μιας μεγάλης συλλογής ιατρικών εγγραφών σε μορφή τέτοια που να αναγνωρίζεται από τον Η/Υ και να μπορεί να επιδεχθεί περαιτέρω επεξεργασία με σκοπό τη στατιστική μελέτη ή την ανακάλυψη νέας γνώσης. Πιο συγκεκριμένα, τα έγγραφα αφορούσαν σε ιστολογικές εξετάσεις παρασκευασμάτων στοματικής και γναθοπροσωπικής χειρουργικής. Οι αναφορές αυτές αριθμούσαν τις 7,047, συντάχθηκαν στο Παθολογοανατομικό και Κυτταρολογικό εργαστήρια του Θεαγενείου Αντικαρκινικού Νοσοκομείου Θεσσαλονίκης και αφορούσαν στα έτη 1995 έως 2010. Για την επίτευξη αυτού του στόχου ήταν απαραίτητος ο συνδυασμός μιας ποικιλίας πεδίων της επιστήμης της Πληροφορικής, όπως είναι η οπτική αναγνώριση χαρακτήρων, η σχεδίαση αλγορίθμων, ο προγραμματισμός, η σχεδίαση βάσεων δεδομένων και, βέβαια, η υπομονή. Αντικείμενο της παρούσας εργασίας είναι η εξαγωγή πληροφοριών από σαρωμένα έγγραφα ιστολογικών εξετάσεων και στη συνέχεια η εισαγωγή τους σε μία κατάλληλη βάση δεδομένων. Η διαδικασία που ακολουθήθηκε μπορεί να συνοψιστεί σε τρία στάδια: 1. Οπτική αναγνώριση χαρακτήρων στα σαρωμένα έγγραφα 2. Αναζήτηση και εξαγωγή πληροφορίας από τα αρχεία κειμένου 3. Σχεδίαση της βάσης δεδομένων 4. Εισαγωγή των πληροφοριών στη βάση δεδομένων 1.2 Δόμηση της εργασίας Το κείμενο ξεκινά με μία ανασκόπηση της πρόσφατης βιβλιογραφίας, εστιάζοντας σε εργασίες σχετικές με το αντικείμενο της παρούσας. Στη συνέχεια παρουσιάζονται οι απαραίτητοι ορισμοί και οι σύγχρονες τεχνικές που ακολουθούνται σήμερα για παρόμοια προβλήματα. Ακολουθεί η ανάλυση των μεθόδων και των υλικών που χρησιμοποιήθηκαν για την επίτευξη του στόχου και η παρουσίαση των αποτελεσμάτων με την εισαγωγή των εγγραφών στη βάση δεδομένων. Τέλος, γίνεται συζήτηση και διερευνώνται οι μελλοντικές δυνατότητες ανακάλυψης γνώσης μέσα στη βάση δεδομένων. Η εργασία δομείται ως εξής: • Στο Κεφάλαιο 1 γίνονται οι περιγραφές του ερευνητικού προβλήματος και της δόμησης της εργασίας. • Στο Κεφάλαιο 2 υπάρχει σύντομη ιστορική αναδρομή και εκτενής βιβλιογραφική ανασκόπηση όλων των μεθόδων που ακολουθούνται στην εργασία με εστίαση σε σύγχρονες δημοσιεύσεις. • Στο Κεφάλαιο 3 παρουσιάζονται οι μέθοδοι και τα υλικά της έρευνας. • Στο Κεφάλαιο 4 γίνεται περιγραφή της ανάπτυξης του ειδικού λογισμικού Dioscoride και της σχεδίασης της βάσης δεδομένων. • Στο Κεφάλαιο 5 παρουσιάζονται τα αποτελέσματα της οπτικής αναγνώρισης χαρακτήρων και της εφαρμογής του λογισμικού που αναπτύχθηκε. Επίσης περιγράφεται η πλήρωση της βάσης δεδομένων με τις αναφορές. • Στο Κεφάλαιο 6 γίνεται συζήτηση των αποτελεσμάτων και διερεύνηση της μελλοντικής εκμετάλλευσης της βάσης δεδομένων . • Στα Παραρτήματα βρίσκεται ο κώδικας του λογισμικού Dioscoride και οι μακροεντολές που εφαρμόστηκαν καθώς και τα αποτελέσματα της πειραματικής σύγκρισης των τριών λογισμικών OCR. • Στα Ακρώνυμα παρουσιάζονται οι συντομογραφίες που συναντώνται μέσα στο κείμενο. • Στο Γλωσσάρι δίνεται η μετάφραση Αγγλικών όρων. • Στο Ευρετήριο δίνονται οι σελίδες των κύριων όρων και ονομάτων του κειμένου για τη διευκόλυνση του αναγνώστη. Στις λεζάντες των εικόνων αναφέρεται η πηγή τους. Αν δεν αναφέρεται πηγή, η εικόνα είναι δημιουργία του συγγραφέα. 19 2. ΒΙΒΛΙΟΓΡΑΦΙΚΗ ΑΝΑΣΚΟΠΗΣΗ 20 21 2.1 Βιβλιογραφική ανασκόπηση Η ιδέα της ψηφιοποίησης χειρόγραφων ή εκτυπωμένων εγγράφων με σκοπό να αποθηκευτούν σε ένα υπολογιστικό σύστημα για περαιτέρω επεξεργασία, δεν είναι καινούρια. Η απότομη εισβολή των Η/Υ σε κάθε γραφείο και υπηρεσία μετά το 1990, είχε ως αποτέλεσμα την αναγκαστική συνύπαρξη δύο διαφορετικών μορφών αποθήκευσης της πληροφορίας: της γραπτής και της ηλεκτρονικής. Και ενώ η πρώτη κατέχει ακόμη και σήμερα το πλεονέκτημα της ευχρηστίας, φορητότητας και γενικότερης ευκολίας, η δεύτερη έχει επικρατήσει σήμερα ακόμη και στις πιο γραφειοκρατικές υπηρεσίες. Στα πλεονεκτήματα της ηλεκτρονικής πληροφορίας περιλαμβάνονται οι δυνατότητα αποθήκευσής της χωρίς να καταλαμβάνει φυσικό χώρο, αλλά ψηφιακό, η ευκολία επεξεργασίας και μετατροπών, η διευκόλυνση της στατιστικών μελετών και υπολογισμών, η ταχεία αναζήτηση και ανακάλυψη γνώσης μέσα σε βάσεις δεδομένων και η ασφάλεια των δεδομένων. Σήμερα, με την εξέλιξη της επιστήμης των υπολογιστών και της ηλεκτρονικής, οι υπολογιστές έχουν γίνει κατά πολύ περισσότερο φιλικοί, εύχρηστοι, ταχύτεροι και αξιόπιστοι από κάθε άλλη περίοδο της εξέλιξή τους. Για αυτούς τους λόγους οι Η/Υ πλέον χρησιμοποιούνται κατά κανόνα για την αποθήκευση των στοιχείων και του ιστορικού των ασθενών με τη μορφή Ηλεκτρονικών Ιατρικών Φακέλων (Electronic Medical Records) με τα δεδομένα να εισάγονται είτε απευθείας, δηλαδή κατά την ώρα της εξέτασης του ασθενή είτε να συμπληρώνονται σε χαρτί και εισάγονται αργότερα στον Η/Υ. Στη δεύτερη περίπτωση τα δεδομένα μπορούν να πληκτρολογηθούν ή να μεσολαβήσει ένα σύστημα σαρωτή (scanner) το οποίο θα μετατρέψει τη χειρόγραφη πληροφορία σε ψηφιακή. Οι Biondich και συν. [1] αξιολογώντας ένα τέτοιο σύστημα, το RMRS, σε μία παιδιατρική κλινική, συμπέρανε ότι είχε ποσοστό αναγνώρισης των χειρόγραφων χαρακτήρων 92.4% και η όλη διαδικασία ήταν τρεις φορές ταχύτερη από τη συμβατική εισαγωγή δεδομένων. Πηγαίνοντας πίσω στο 1960 (εικόνα 1), το όραμα της αποθήκευσης ιατρικής πληροφορίας σε υπολογιστές, περιγράφεται σε ένα άρθρο των New York Times [2], όπου «... στο μέλλον οι ιατρικοί φάκελοι θα είναι αποθηκευμένοι σε μαγνητοταινία ή άλλο μέσο, κατάλληλο για τους κομπιούτερς, και ίσως αντικαταστήσουν πλήρως τους χειρόγραφους φακέλους των ασθενών». Το 1967 στην ίδια εφημερίδα [3] περιγράφεται με περισσότερες λεπτομέρειες ο μελλοντικός φάκελος υγείας: «...κάθε άντρας, γυναίκα και παιδί θα έχουν το πλήρες ιατρικό τους ντοσιέ σε ηλεκτρονική μορφή, αποθηκευμένο μέσα σε ένα τεράστιο σύστημα μνήμης που θα βρίσκεται στην Ουάσινγκτον (...) έτσι αν κάποιος πάθει έμφραγμα ενώ βρίσκεται σε διακοπές σε άλλη πόλη, ο εκεί ιατρός θα κάνει ένα απλό τηλεφώνημα στην Ουάσιγκτον και μέσα σε δευτερόλεπτα θα έχει το πλήρες ιστορικό του ασθενούς». 22 Εικόνα 1. Υπολογιστής της Monroe με μέγεθος όσο ένα γραφείο, μαγνητική μνήμη τυμπάνου και εισαγωγή δεδομένων μέσω χάρτινης ταινίας. (1960) Πηγή: [4] Ένα πρόβλημα ανακύπτει από την ανάγκη διαχείρισης των συσσωρευμένου παλαιού αρχείου που βρίσκεται με τη μορφή χαρτιού και το οποίο, λόγω της απότομης εισβολής της τεχνολογίας, δεν κατέστη ακόμη δυνατό να μετατραπεί σε ηλεκτρονική μορφή. Όμως, το αρχείο αυτό περιέχει πληροφορίες ζωτικής σημασίας ιδιαίτερα χρήσιμες για τη στατιστική έρευνα και την ανακάλυψη γνώσης. Σε τέτοιες περιπτώσεις, όπως είναι και οι αναφορές ιστοπαθολογικών εξετάσεων, είναι απαραίτητη η σάρωση των εγγράφων και η μετατροπή τους σε ψηφιακό κείμενο. Στη συνέχεια, για την εξαγωγή των δεδομένων από τα σαρωμένα έγγραφα ακολουθούνται μέθοδοι μηχανικής μάθησης ,όπως ταξινομητές Bayes, μηχανές διανυσμάτων υποστήριξης (Support Vector Machines - SVM) και το κρυφό μοντέλο Markov (HMM) [5,6,7]. Οι Misra και συν. (2009) [8] περιγράφουν ένα τέτοιο σύστημα για την αυτόματη εξαγωγή μετα-δεδομένων από 1200 σαρωμένα έγγραφα του Αμερικανικού Food and Drug Administration με μεθόδους SVM και HMM και ποσοστό λάθος <10%. Οι Patrick και Scolyer (2008) [9] ψηφιοποίησαν 477 εκτυπωμένες αναφορές ιστολογικών εξετάσεων μελανώματος στο Royal Prince Alfred Hospital του Σύδνεϋ. Στη συνέχεια , για την εξαγωγή γνώσης, τα ψηφιακά έγγραφα δόθηκαν σε μία ομάδα που αποτελούνταν από παθολόγους και γλωσσολόγους για να σημειώσουν (annotate) τους όρους κρίσιμης σημασίας μέσα στα κείμενα. Οι όροι αυτοί θα χρησιμοποιούνταν για την περαιτέρω βελτίωση του συστήματος ώστε να προκύπτει αυτοματοποιημένη εξαγωγή πληροφορίας. 23 Όπως γίνεται αντιληπτό, μετά την ψηφιοποίηση ενός εγγράφου, απαιτείται ένας αυτόματος τρόπος εξαγωγής πληροφορίας ή κατηγοριοποίησης του εγγράφου. Ένα πρόβλημα αυτής της κατηγορίας είναι η περίπτωση που υπάρχει ένα σύνολο ιστολογικών αναφορών και ζητείται να βρεθούν οι αναφορές αυτές που αφορούν σε καρκίνο ενός συγκεκριμένου είδους. Οι Zuccon και συν. (2012) [10,11] μετέτρεψαν 228 ιστοπαθολογικές αναφορές καρκίνων σε ψηφιακή μορφή χρησιμοποιώντας ένα εμπορικό πρόγραμμα OCR και στη συνέχεια τις εισήγαγαν στο αυτόματο σύστημα ταξινόμησης MEDTEX (MEDical Text EXtraction). Το MEDTEX [12] είναι ένα εργαλείο λογισμικού που διαβάζει μαζικά τις ιστολογικές αναφορές, εντοπίζει αυτόματα τις πληροφορίες σταδιοποίησης και υπολογίζει το στάδιο TNM για κάθε αναφορά. Οι Butt και συν. (2012) [13] επεξεργάστηκαν 5,000 πιστοποιητικά θανάτου λόγω καρκίνου και χρησιμοποίησαν διάφορες μεθόδους μηχανικής μάθησης για να τα ταξινομήσουν ανάλογα με το είδος της ασθένειας. Την ακριβέστερη ταξινόμηση προσέφερε ένας ταξινομητής SVM σε συνδυασμό με stemBigrams, δηλαδή λέξεων «κορμού» του κάθε πιστοποιητικού και τις κωδικοποιήσεις του SNOMED CT. Η αυτόματη κατηγοριοποίηση ιατρικών κειμένων γίνεται επίσης με διαδικασίες επεξεργασίας φυσικής γλώσσας (Natural Language Processing – NLP). Η NLP είναι ένα σύνολο μεθόδων οι οποίες αναφέρονται στη δυνατότητα εξαγωγής κάποιου νοήματος από μία πρόταση-φράση έτσι ώστε ο Η/Υ να προβεί σε ενέργειες ή να μετατρέψει την πρόταση σε μία εσωτερική δομή αναπαράστασης γνώσης [5, 14]. Οι Imler και συν. (2013)[15] χρησιμοποίησαν αυτή τη μέθοδο σε 10,798 αναφορές ιστολογικών εξετάσεων κολονοσκόπησης με ακρίβεια 98%. Για την αρχική εκπαίδευση του συστήματος στην ειδική ορολογία, χρησιμοποιήθηκε ένα τυχαίο δείγμα 500 αναφορών πάνω στις οποίες σημειώθηκαν οι όροι-κλειδιά από μία ομάδα γαστρεντερολόγων. Οι Thomas και συν. (2013)[16] χρησιμοποίησαν λογισμικό NLP σε 18,453 EMRs (ηλεκτρονικούς ιατρικούς φακέλους) για να ξεχωρίσουν τους ασθενείς εκείνους οι οποίοι είχαν θετική βιοψία για αδενοκαρκίνωμα του προστάτη. Η ακρίβεια της διαδικασίας ήταν 99.1%. Σε μία παρόμοια εργασία, οι Mitchell και συν. (2003)[17] ανέπτυξαν ένα σύστημα αυτοματοποιημένης αναγνώρισης ιστολογικών αναφορών που αφορούν σε καρκίνους του προστάτη και του στήθους. Το σύστημα εντοπίζει σε κάθε αναφορά το όργανο, τη διαδικασία και τη διάγνωση και βασίζεται στο σύστημα ορολογίας UMLS (Unified Medical Language System) [18]. Εκτός από τις προχωρημένες δυνατότητες αυτόματης ταξινόμησης και εξαγωγής γνώσης από ηλεκτρονικά ιατρικά αρχεία, η απλή και μόνο τοποθέτηση των δεδομένων σε μία οργανωμένη βάση δεδομένων είναι ιδιαίτερα χρήσιμη. Μία τέτοια βάση δεν διευκολύνει μόνο τη στατιστική επεξεργασία και την εισαγωγή των νέων δεδομένων, αλλά συμβάλλει και στην εκπαίδευση των ειδικευόμενων ιατρών και στη διαμοίραση γνώσης. Οι Roccio και συν. (2010)[19] στη γναθοπροσωπική κλινική του νοσοκομείου San Giovanni Battista, Turin ανέπτυξαν μία βάση δεδομένων γναθοπροσωπικών τραυμάτων. Οι πίνακες της βάσης περιείχαν 13 χαρακτηριστικά, όπως αιτία τραυματισμού, περιοχή τραύματος, δείκτης Facial Injury Severity Scale, είδος επέμβασης, ημέρες νοσηλείας κ.α.. Ενδεικτικά, για το γνώρισμα «Αιτίες» δημιουργήθηκε μία λίστα με μηχανισμούς πρόκλησης τραυμάτων, όπως «τροχαίο ατύχημα» με υποκατηγορίες «με ζώνη ασφαλείας», «χωρίς ζώνη ασφαλείας», «με κράνος», «χωρίς κράνος», «σύγκρουση πεζού με αυτοκίνητο» κ.α. Άλλες κατηγορίες ήταν οι 24 «πτώσεις», «επιθέσεις», «σπορ» κ.λ.π. Παρομοίως, οι Zhaohui και συν. (2008) [20] δημιούργησαν μία βάση δεδομένων γναθοπροσωπικού τραύματος με αρχική εισαγωγή 1,959 περιστατικών, στην Κίνα. 25 2.2 Στοματική και γναθοπροσωπική χειρουργική 2.2.1 Ορισμοί Σύμφωνα με τον ορισμό του 1990 της American Dental Association (ADA) [21] η στοματική και γναθοπροσωπική χειρουργική (Oral and Maxillofacial Surgery) (ΣΓΠΧ) είναι η ειδικότητα της οδοντιατρικής η οποία περιλαμβάνει τη διάγνωση, τη χειρουργική και συμπληρωματική θεραπεία ασθενειών, τραυμάτων και ατελειών (defects) που περιλαμβάνουν τα λειτουργικά και αισθητικά χαρακτηριστικά των σκληρών και μαλακών ιστών του στόματος και της γναθοπροσωπικής περιοχής. Αντιστοίχως, η Στοματική και Γναθοπροσωπική Παθολογία (Oral and Maxillofacial Pathology) είναι η ειδικότητα της οδοντιατρικής και κατηγορία της παθολογίας που ασχολείται με τη φύση, αναγνώριση και αντιμετώπιση ασθενειών που προσβάλλουν τη στοματική και γναθοπροσωπική περιοχή. Συμπληρωματικά στον παραπάνω ορισμό, σύμφωνα με τη British Association of Oral and Maxillofacial Surgeons [22], η γναθοπροσωπική περιοχή περιλαμβάνει τις γνάθους, το πρόσωπο και τον τράχηλο. 2.2.2 Αντικείμενο της ΣΓΠΧ Τα συνήθη προβλήματα που αντιμετωπίζει ο ΣΓΠΧ περιλαμβάνουν καλοήθεις και κακοήθεις όγκους της ΣΓΠ περιοχής, νόσους των σιελογόνων αδένων, δυσαναλογίες του προσώπου και των γνάθων, πόνο στην περιοχή του προσώπου, δυσλειτουργίες της κροταφογναθικής διάρθρωσης, έγκλειστα δόντια, κύστεις και άλλα προβλήματα του στοματικού βλεννογόνου όπως έλκη και λοιμώξεις. Στην Ελλάδα και σε άλλες χώρες, η ΣΓΠΧ είναι διπλή ειδικότητα και απαιτεί την κτήση δύο πτυχίων, της Οδοντιατρικής και της Ιατρικής. Το υλικό της παρούσας εργασίας βασίζεται σε χειρουργικά παρασκευάσματα που προήλθαν αποκλειστικά από εξαίρεση καλοήθων και κακοήθων ή ύποπτων για κακοήθεια εξεργασιών της ΣΓΠ περιοχής. Ασχολείται δηλαδή με ένα υποσύνολο των ΣΓΠ προβλημάτων. 26 2.3 Σάρωση εγγράφων και οπτική αναγνώριση χαρακτήρων 2.3.1 Ο σαρωτής Ο σαρωτής (scanner) είναι μία περιφερειακή συσκευή που επιτρέπει την ψηφιοποίηση εγγράφων (εικόνες, σελίδες κειμένου) αλλά και τρισδιάστατων αντικειμένων ώστε να δημιουργηθεί μία ψηφιακή αναπαράστασή τους για παραπέρα επεξεργασία και χρήση [23]. Ο πιο διαδεδομένος τύπος scanner είναι ο επίπεδος, ο οποίος βασίζεται σε τεχνολογία Charged Couple Device (CCD). Το CCD scanner αποτελείται από μία κεφαλή σάρωσης με μια συστοιχία κελιών CCD και κάτοπτρα, μία λυχνία φωτισμού, έναν βηματικό κινητήρα και μία γυάλινη επιφάνεια. Όταν αρχίζει η σάρωση, η κεφαλή μετακινείται αργά, με διακριτά βήματα κάτω από το έγγραφο. Σε κάθε βήμα το έγγραφο φωτίζεται και το φως που ανακλάται οδηγείται στα στοιχεία CCD όπου μετατρέπεται σε ψηφιακή πληροφορία. Κατά τη σάρωση ενός εγγράφου, η σημαντικότερη παράμετρος που πρέπει να καθοριστεί είναι η ανάλυση. Αυτή εξαρτάται από την ανάλυση της συσκευής εξόδου όπου θα χρησιμοποιηθεί η σαρωμένη εικόνα. Η ανάλυση σάρωσης στην περίπτωση που θα ακολουθήσει οπτική αναγνώριση χαρακτήρων, είναι καλό να είναι η μεγαλύτερη δυνατή, αν και αυτός δεν είναι ο καθοριστικός παράγοντας για μια σωστή αναγνώριση. 2.3.2 Οπτική αναγνώριση χαρακτήρων Μετά τη σάρωση μίας σελίδας, αυτή στέλνεται στον υπολογιστή ως ψηφιακή εικόνα, όχι ως αρχείο κειμένου. Αν θέλουμε να επεξεργαστούμε το κείμενο που περιέχεται μέσα στην εικόνα, δηλαδή να το αντιγράψουμε, να το αποθηκεύσουμε ή να το τροποποιήσουμε, πρέπει η ψηφιακή εικόνα να μετατραπεί σε κείμενο. Αυτή η διαδικασία γίνεται με τη χρήση λογισμικού οπτικής αναγνώρισης χαρακτήρων (optical character recognition – OCR). Σε γενικές γραμμές, η OCR πραγματοποιείται συγκρίνοντας τα σχήματα της σαρωμένης εικόνας με χαρακτήρες οι οποίοι είναι αποθηκευμένοι στο λογισμικό, και επιλέγεται ο χαρακτήρας που ταιριάζει περισσότερο σε κάθε σχήμα (matrix matching). Αυτός ο τρόπος είναι ο απλούστερος. Ένας άλλος τρόπος είναι η αναζήτηση των χαρακτηριστικών σχημάτων του κάθε υποψήφιου χαρακτήρα, όπως καμπύλες και ευθείες, και η αναγνώριση μέσω αυτών (feature extraction). Οι χαρακτήρες που βρίσκονται αποθηκευμένοι στο σύστημα προέρχονται από εκπαίδευση (training) του λογισμικού. Δηλαδή το λογισμικό με την καθοδήγηση του χρήστη αποθηκεύει έναν-έναν όλους τους χαρακτήρες από σαρωμένα δείγματα κειμένου και αναθέτει στον καθένα την τιμή που ορίζει ο χρήστης. Με αυτόν τον τρόπο το λογισμικό εκπαιδεύεται και «μαθαίνει». Ειδικότερα, οι τρόποι που χρησιμοποιούνται είναι οι παρακάτω: 1. Συσχέτιση για την αναγνώριση μονού χαρακτήρα Η διαδικασία ξεκινά με την ψηφιοποίηση της εικόνας η οποία γίνεται μέσα στο σαρωτή (εικόνα 2). 27 Εικόνα 2. Ψηφιοποίηση-μετατροπή σε διτονική εικόνα. Ακολουθεί η αφαίρεση του θορύβου και η τμηματοποίηση (segmentation). Κατά την τμηματοποίηση αναγνωρίζονται όλα τα ξεχωριστά αντικείμενα της εικόνας, δηλαδή οι πιθανοί χαρακτήρες, και κόβονται (resize and crop) στο μέγεθος των προτύπων χαρακτήρων (templates) τα οποία είναι ήδη αποθηκευμένα στο σύστημα. Μετά μπορεί να ακολουθήσει κανονικοποίηση (normalization) με μετασχηματισμούς Hough, δηλαδή περιστροφή για ευθυγράμμιση των χαρακτήρων αν η σελίδα είχε τοποθετηθεί στραβά, και βελτίωση του περιγράμματος (smoothing) μέσω της εφαρμογής παραθύρων συγκεκριμένων κανόνων (εικόνα 3). Εικόνα 3. Κανονικοποίηση και smoothing. Το επόμενο στάδιο είναι η αναγνώριση. Κατά το στάδιο αυτό το αντικείμενο συσχετίζεται (correlation) με όλους τους προ-φορτωμένους χαρακτήρες και υπολογίζεται ο βαθμός συσχέτισης για κάθε ζευγάρι. Ο υψηλότερος βαθμός συσχέτισης υποδεικνύει τον αναγνωρισμένο χαρακτήρα. Μειονεκτήματα αυτής της μεθόδου είναι ο μεγάλος αριθμός συγκρίσεων, η απαιτούμενη μνήμη και ο χρόνος επεξεργασίας [24,25]. 2. Συσχέτιση για αναγνώριση χαρακτήρα συνεχούς τύπου Μετά την ψηφιοποίηση και αποθορυβοποίηση, η εικόνα τμηματοποιείται με οριζόντιες γραμμές, η κάθε μία από τις οποίες αφορίζει μία σειρά λέξεων. Η κάθε σειρά αποτελείται από πολλές λέξεις και η κάθε λέξη από πολλά γράμματα. Το κάθε γράμμα αναγνωρίζεται όπως και στην προηγούμενη μέθοδο, μέσω σύγκρισης και συσχέτισης με πρότυπα [25]. 28 3. Τεχνικές εξαγωγής των ιδιαίτερων χαρακτηριστικών του χαρακτήρα Οι τεχνικές features extraction κάνουν μετρήσεις και υπολογισμούς πάνω στο κάθε αντικείμενο και συγκρίνουν τις τιμές αυτές (features) με αυτές των προτύπων. Με αυτόν τον τρόπο ο κάθε χαρακτήρας εκπροσωπείται από ένα συγκεκριμένο διάνυσμα αριθμών. Αυτές οι τεχνικές περιλαμβάνουν τις μετρήσεις της κατανομής των σημείων (distribution of points) [25] μετασχηματισμούς Fourier (εικόνα 4) [26] και Hough [27] φίλτρα Gabor [28] Aspect ratio [29] Υπολογισμοί με τη χρήση ιστογραμμάτων του χαρακτήρα στους άξονες x και y. [30] Υπολογισμός κεντρικών σημείων (central moments) [26]. Εικόνα 4. Μετασχηματισμός Fourier για το χαρακτήρα 3. Πηγή: [25] 4. Αναγνώριση χαρακτήρων με νευρωνικά δίκτυα Ο νευρώνας (neuron) είναι ένα κύτταρο με κύρια λειτουργία τη συγκέντρωση, επεξεργασία και διάδοση ηλεκτρικών σημάτων. Δίκτυα τέτοιων κυττάρων δίνουν τη δυνατότητα επεξεργασίας πληροφοριών [31]. Αντίστοιχα προς το βιολογικό νευρώνα, ορίζεται και ο τεχνητός νευρώνας (artificial neuron) στην πληροφορική. Ένα απλό μαθηματικό μοντέλο τεχνητού νευρώνα αποτελείται από τους 29 συνδέσμους εισόδου, τη συνάρτηση εισόδου ή αθροιστή, τη συνάρτηση ενεργοποίησης και την έξοδο (εικόνα 5). Ένα παράδειγμα παρουσιάζεται στην εικόνα. Ένα τεχνητό νευρωνικό δίκτυο (ΤΝΔ) αποτελείται από μονάδες τεχνητών νευρώνων συνδεδεμένους μεταξύ τους με κατευθυνόμενους συνδέσμους (εικόνα 6). Κάθε μονάδα υπολογίζει ένα σταθμισμένο άθροισμα των εισόδων της και κατόπιν εφαρμόζει τη συνάρτηση ενεργοποίησης σε αυτό το άθροισμα για να παράγει την έξοδο. Ένα δίκτυο όπου όλες οι είσοδοί του είναι άμεσα συνδεδεμένες στις εξόδους ονομάζεται δίκτυο ενός επιπέδου με προς τα εμπρός τροφοδότηση ή perceptron. Εικόνα 5. Νευρώνας που υλοποιεί τη λογική πράξη AND. Εικόνα 6. Νευρωνικό δίκτυο με ένα ενδιάμεσο (κρυφό) επίπεδο, μία είσοδο και πολλές εξόδους. 30 Τα ΤΝΔ πραγματοποιούν δύο βασικές λειτουργίες: την εκπαίδευση (training) και την ανάκληση (recall): κατά τη μάθηση γίνεται τροποποίηση των τιμών των συναρτήσεων του δικτύου, ώστε δοθείσης μίας συγκεκριμένης εισόδου να παράγεται ένα συγκεκριμένο διάνυσμα εξόδου, ενώ ανάκληση είναι η διαδικασία του υπολογισμού ενός διανύσματος εξόδου για συγκεκριμένο διάνυσμα εισόδου και τιμές βαρών [5]. Στην OCR χρησιμοποιούνται συνηθέστερα τα ΤΝΔ πολλών επιπέδων (multi-level perceptron neural network), στα οποία για την αναγνώριση ενός προτύπου γίνεται οπισθοδρόμηση [32] (back-propagation). Ένα τέτοιο δίκτυο αποτελείται από διασυνδεδεμένα επίπεδα νευρώνων και εκπαιδεύεται δίνοντάς στην είσοδο παραδείγματα. Ένα διάνυσμα που περιέχει τις τιμές των χαρακτηριστικών ενός χαρακτήρα δίνεται στην είσοδο του δικτύου. Ο κάθε νευρώνας υπολογίζει την τιμή εξόδου και τη μεταβιβάζει στην είσοδο του επόμενου επιπέδου. Μεταβάλλοντας τις παραμέτρους της συνάρτησης ενεργοποίησης, ο χρήστης μπορεί να καθορίσει την έξοδο του δικτύου. Για παράδειγμα, μία σελίδα που περιέχει το γράμμα «Δ» σαρώνεται και γίνονται μετρήσεις με κάποια από τις μεθόδους που περιγράφτηκαν παραπάνω. Οι τιμές που προκύπτουν δίνονται ως είσοδος στο ΝΔ ως διάνυσμα. Ο χρήστης παρατηρεί την έξοδο του δικτύου και μεταβάλλει τις παραμέτρους των συναρτήσεων ενεργοποίησης. Όταν στην έξοδο εμφανιστεί ο κωδικός που αντιστοιχεί στο γράμμα «Δ» τότε το δίκτυο έχει «μάθει» να αναγνωρίζει το συγκεκριμένο χαρακτήρα. Η δυνατότητα εκπαίδευσης των ΤΝΔ ώστε να λύνουν προβλήματα και η ικανότητά τους για μη-γραμμική μοντελοποίηση, τα καθιστούν πολύ χρήσιμα εργαλεία στην OCR. Οι Pallavi και Saxena (2012)[32] παρουσίασαν ένα τυπικό τέτοιο σύστημα. Το αντίστοιχο ΤΝΔ παρουσιάζεται στην εικόνα 7. 31 Εικόνα 7. Ένα ΤΝΔ με είσοδο δεδομένα εικόνας και έξοδο κείμενο UNICODE. Πηγή: [33] Η εικόνα 8 παρουσιάζει με απλοποιημένο τρόπο μια διαδικασία OCR με χρήση νευρωνικού δικτύου από την ψηφιοποίηση μέχρι την εξαγωγή των κωδικών UNICODE σε έγγραφο ψηφιακής μορφής. Εικόνα 8. Χρήση νευρωνικού δικτύου στην OCR. Από αρ προς τα δε: Σάρωση, τμηματοποίηση, ψηφιοποίηση, εισαγωγή στο ΤΝΔ, αναγνώριση με back propagation, δημιουργία κειμένου. 32 2.3.3 Αδυναμίες και προβλήματα Η OCR σήμερα χρησιμοποιείται ευρέως και έχει πολλές εφαρμογές, αλλά η ακρίβειά της είναι ακόμη περιορισμένη. Ακόμη και ένας (δύσκολα επιτεύξιμος) βαθμός ακρίβειας 99%, όταν αφορά σε ένα κείμενο μίας σελίδας που περιέχει 3000 χαρακτήρες, μεταφράζεται σε 30 λάθη/σελίδα [33]. Για αυτό στις περισσότερες περιπτώσεις, το κείμενο που προκύπτει από την OCR πρέπει να ελεγχθεί και να διορθωθεί από έναν άνθρωπο, όπως και συνέβη στην παρούσα εργασία, ή εάν το κείμενο περιέχει πάρα πολλά λάθη, απορρίπτεται και δακτυλογραφείται από την αρχή. Οι Nagy και συν.(2000)[33] αναφέρουν τα σημαντικότερα προβλήματα των συστημάτων OCR: Ατέλειες της εικόνας του εγγράφου λόγω κακής ποιότητας χαρτιού (πολύ πορώδες ή πολύ γυαλιστερό), εκτύπωση πολύ υψηλής ταχύτητας, πρόσφατα αλλαγμένο μελάνι ή ανεπαρκές μελάνι, εκτύπωση dot-matrix με διαφυγή μελάνης κ.α. Επίσης η σάρωση μπορεί να εισάγει σφάλματα ειδικά στην περίπτωση που το χαρτί δεν έχει μεγάλη διαφορά αντίθεσης σε σχέση με το τυπωμένο κείμενο (contrast). Εικόνες 9-10. Εικόνα 9. Παράδειγμα κειμένου χαμηλής αντίθεσης. «Κλινική». Η OCR αναγνωρίζει: « Κλι\ιι-ιι » Εικόνα 10. Εκτύπωση με πολύ μελάνι. «σπίλου». Η OCR αναγνωρίζει: « οττΙλωυ » 33 Παρόμοια σύμβολα. Η παρουσία συμβόλων που έχουν παρόμοιες ευθείες και καμπύλες με σχεδόν ίδιο μέγεθος προκαλούν δυσχέρεια αναγνώρισης. Το ανθρώπινο μάτι μπορεί εύκολα να ξεχωρίσει τέτοιους χαρακτήρες από τα συμφραζόμενα, ενώ το λογισμικό μελετάει τον κάθε χαρακτήρα αποκομμένο από τους διπλανούς. Παράδειγμα οι χαρακτήρες 0 (μηδέν), Ο (όμικρον) και 1 (ένα), Ι (γιώτα). Σημεία στίξης, όπως η τελεία και το κόμμα. Στα Ελληνικά οι τόνοι αρκετές φορές μπορούν να φαίνονται ως ενωμένοι με το υπόλοιπο γράμμα, όπως στην παραπάνω εικόνα, στη λέξη «σπίλου» ο τόνος του ί φαίνεται ενωμένος με το γράμμα λόγω της πολύ κοντινής απόστασης. Γραμματοσειρές. Κάποιες φορές οι πλάγιες, καλλιτεχνικές, στενές ή αραιές γραμματοσειρές μπορούν να μπερδέψουν το λογισμικό. Για παράδειγμα η λέξη “fine” με πλάγια γραμματοσειρά Arial Narrow μπορεί να αναγνωριστεί ως Fme γιατί η τελεία του i καλύπτεται από την κορυφή του f. 2.3.4 Δυνατότητες βελτίωσης της OCR Νέες τεχνολογίες μπορούν να εφαρμοστούν ώστε να βελτιωθεί η ικανότητα αναγνώρισης τυπωμένων χαρακτήρων, αυτές περιλαμβάνουν: Προ-επεξεργασία της εικόνας για την αντιμετώπιση των ατελειών εκτύπωσης ή/και σάρωσης [33]. Προσαρμοζόμενη (adaptive) διαδικασία στον ιδιαίτερο τύπο του περιεχομένου και της γραμματοσειράς του κάθε εγγράφου [33]. Ταυτόχρονη αναγνώριση πολλαπλών χαρακτήρων/ λέξεων και χρήση λεξικών [33] Συντακτική και δομική ανάλυση των υπο-προτύπων που συνθέτουν μία λέξη ή μικρή πρόταση (syntactic and structural recognition) [31,33] Στατιστικές μέθοδοι και μηχανική μάθηση, όπως ταξινομητές Bayes [35], HMM [36]. 34 2.4 Συστήματα βάσεων δεδομένων 2.4.1 Εισαγωγή Ένα σύστημα βάσης δεδομένων (ΣΒΔ – database system) αναλαμβάνει την αποθήκευση, προστασία και επεξεργασία των δεδομένων του χρήστη, παρέχοντας εξελιγμένους μηχανισμούς πρόσβασης δικαιωμάτων και ενημέρωσης των δεδομένων [37]. Ένα ΣΒΔ αποτελείται από: Τη βάση δεδομένων (ΒΔ - database). Αυτή είναι η συλλογή των στοιχείων που έχουν συσχέτιση μεταξύ τους (δεδομένα) και είναι δομημένα αι καταχωρισμένα με κατάλληλο τρόπο μέσα στη βάση Το σύστημα διαχείρισης της ΒΔ (database management system - DBMS), δηλαδή το λογισμικό που υλοποιεί όλες τις επιθυμητές λειτουργίες μέσα στη ΒΔ, όπως η αναζήτηση, εισαγωγή, διαγραφή και συγχρονισμός των δεδομένων, η προστασία τους και ο έλεγχος της προσπέλασης. Το DBMS μπορεί να διαχειρίζεται πολλές ΒΔ ταυτόχρονα. Η λογική δομή της ΒΔ, δηλαδή ο τρόπος με τον οποίο τα δεδομένα συσχετίζονται μεταξύ τους αποτελεί το μοντέλο οντοτήτων-συσχετίσεων (entity relationship model). Το μοντέλο αυτό στηρίζεται στη θεώρηση ότι ο πραγματικός κόσμος αποτελείται από οντότητες, οι οποίες έχουν κάποια χαρακτηριστικά (ή γνωρίσματα) και συσχετίζονται με άλλες οντότητες. Έτσι συμβαίνει και με τα δεδομένα της ΒΔ. Για παράδειγμα, μία αναφορά ιστολογικής εξέτασης μπορεί να θεωρηθεί ως μία οντότητα. Ο ασθενής είναι μία άλλη οντότητα. Το παρασκεύασμα είναι επίσης μία οντότητα. Όμως ο αριθμός πρωτοκόλλου είναι χαρακτηριστικό της οντότητας-αναφορά, όπως επίσης και το αποτέλεσμα της εξέτασης, ενώ το ονοματεπώνυμο είναι χαρακτηριστικό της οντότηταςασθενής. Μέσα στη ΒΔ μία οντότητα αποτελεί έναν πίνακα, και τα χαρακτηριστικά της είναι οι στήλες του πίνακα. Η κάθε γραμμή του πίνακα είναι μία εγγραφή δεδομένων και έχει ένα μοναδικό αναγνωριστικό (κλειδί). Οι συσχετίσεις μεταξύ των πινάκων αναπαριστώνται χρησιμοποιώντας τα κλειδιά αυτά ή/και με βοηθητικούς πίνακες (πίνακες συσχέτισης). 2.4.2 Ασφάλεια ιατρικών βάσεων δεδομένων Τα δεδομένα που αποθηκεύονται μέσα σε ένα DBMS είναι συχνά πολύ μεγάλης σημασίας για την εταιρία ή γενικά τους κατόχους των ΒΔ. Ειδικότερα, για τις βάσεις που περιέχουν ιατρικά δεδομένα ασθενών η εξασφάλιση της ιδιωτικότητας αυτών των στοιχείων είναι ζωτικής σημασίας. Πρέπει να υπάρχουν μηχανισμοί που να μην επιτρέπουν την αποκάλυψη των όλων ή μέρους των δεδομένων σε συγκεκριμένες ομάδες χρηστών. Τα χαρακτηριστικά μιας ασφαλούς βάσης δεδομένων είναι[38]: 35 η μυστικότητα ή εμπιστευτικότητα (confidentiality), δηλαδή η μη αποκάλυψη πληροφοριών σε μη εξουσιοδοτημένους χρήστες η ακεραιότητα (integrity), δηλαδή η δυνατότητα τροποποίησης των δεδομένων πρέπει να παρέχεται μόνο σε συγκεκριμένους χρήστες η διαθεσιμότητα (availability), δηλαδή η μη απαγόρευση της πρόσβασης σε εξουσιοδοτημένους χρήστες. Αυτές οι προϋποθέσεις πληρούνται γενικά με τον έλεγχο της προσπέλασης ο οποίος μπορεί να είναι είτε διακριτικός είτε υποχρεωτικός, με περιορισμό των ερωτημάτων που μπορούν να τεθούν στη ΒΔ, με επιβολή ασφάλειας μέσω όψεων και με κρυπτογράφηση των δεδομένων [37, 38]. Στο διακριτικό έλεγχο οι χρήστες έχουν προνόμια για την πρόσβαση ή την τροποποίηση αντικειμένων στη ΒΔ. Στον υποχρεωτικό έλεγχο τα αντικείμενα διαθέτουν τάξεις ασφαλείας και οι χρήστες έχουν άδεια χρήσης μιας τάξης ασφάλειας. Από την άποψη των πολιτικών ασφάλειας (database security policies) των ΒΔ, μπορούμε να διακρίνουμε τρεις κατηγορίες [39, 40]: 1. Την πολιτική ασφάλειας πολλαπλών επιπέδων (multilevel - MAC), δηλαδή τη διαβάθμιση της εμπιστευτικότητας μιας πληροφορίας (π.χ. εμπιστευτική, απόρρητη) 2. την κατά διάκριση (discretionary - DAC) πολιτική ασφάλειας , δηλαδή κανόνες με τους οποίους ορισμένοι χρήστες μπορούν να έχουν προσπέλαση στη βάση 3. πολιτική personal knowledge η οποία δίνει προτεραιότητα στην προστασία της ιδιωτικότητας. Οι χρήστες μιας ΒΔ μπορούν να κατηγοριοποιηθούν ανάλογα με το επίπεδο πρόσβασης που παρέχεται στον καθένα. Μπορεί, δηλαδή, να αποδοθεί ένας ρόλος (role) σε κάθε ομάδα χρήστη. Με αυτήν την προσέγγιση (RBAC - role based access control) [41] περιορίζεται η πρόσβαση μόνο σε εξουσιοδοτημένους χρήστες και υλοποιείται η απαίτηση για πρόσβαση MAC και DAC. 2.4.3 Εξόρυξη δεδομένων Ως εξόρυξη δεδομένων (data mining) ορίζεται η ανακάλυψη ενδιαφερόντων τάσεων ή προτύπων σχημάτων μέσα σε μεγάλα σύνολα δεδομένων με σκοπό να καθοδηγήσει αποφάσεις σχετικές με μελλοντικές δραστηριότητες [38]. Σχετίζεται στενά με την ανακάλυψη γνώσης και τη μηχανική μάθηση της ΤΝ με τη διαφορά ότι στην εξόρυξη ο όγκος των δεδομένων είναι μεγάλος και άρα χρειάζεται κλιμάκωση των αλγορίθμων σε σχέση με τους πόρους του Η/Υ (μνήμη, δίσκος). Η ανακάλυψη γνώσης σε ΒΔ χωρίζεται σε τέσσερα στάδια: 1. Επιλογή δεδομένων από το σύνολο των ακατέργαστων δεδομένων και προσδιορισμός των γνωρισμάτων που μας ενδιαφέρουν. 36 2. Καθαρισμός από το θόρυβο, μετασχηματισμός των πεδίων σε κοινές τιμές μέτρησης και δημιουργία του κατάλληλου σχεσιακού σχήματος με πιθανή τη δημιουργία νέων πεδίων. 3. Εξόρυξη και εξαγωγή των προτύπων σχημάτων 4. Αξιολόγηση και παρουσίαση των αποτελεσμάτων στο χρήστη Καθώς ο πρωταρχικός στόχος της εργασίας δεν είναι η εξόρυξη δεδομένων, δεν θα αναλυθούν περισσότερο οι σχετικές μέθοδοι. Κατά την ολοκλήρωση της εργασίας, από τα παραπάνω βήματα, τα 1 και 2 ολοκληρώθηκαν αλλά με εν μέρει αποθορυβοποίηση. Η δυνατότητες της μελλοντικής εκμετάλλευσης της βάσης δεδομένων μέσω τεχνικών εξόρυξης θα συζητηθούν στο Κεφάλαιο 6. 37 2.5 Αναζήτηση πληροφορίας σε αρχεία κειμένου Η αναζήτηση πληροφοριών μέσα σε αρχεία κειμένου ανάγεται στο πρόβλημα εύρεσης συμβολοσειρών (strings) μέσα σε ένα σύνολο χαρακτήρων (text). Για παράδειγμα, αν αναζητούμε το ονοματεπώνυμο ενός ασθενή μέσα σε ένα κείμενο, πρέπει αρχικά να αναζητήσουμε το string «Ονοματεπώνυμο:» ξεκινώντας από την αρχή του κειμένου και συγκρίνοντας διαδοχικά το string αυτό με κάθε λέξη που συναντάμε, μέχρι να ανακαλύψουμε την θέση του «Ονοματεπώνυμο:» μέσα στο κείμενο. Η συμβολοσειρά που αναζητούμε αποτελεί το πρότυπο αναζήτησης (pattern). Όταν βρεθεί το πρότυπο, γνωρίζουμε ότι το όνομα του ασθενή ξεκινά αμέσως μετά τον τελευταίο χαρακτήρα του string (:) και μπορούμε να το αναγνώσουμε με κάποιους επιπλέον κανόνες. Παρακάτω περιγράφονται δύο διαδεδομένες προσεγγίσεις οι οποίες χρησιμοποιούνται για την αναζήτηση προτύπων μέσα σε κείμενο. 2.5.1 Αλγόριθμος ωμής βίας Ο αλγόριθμος ωμής βίας (brute force)[42] στοιχίζει το πρότυπο μήκους m στους πρώτους m χαρακτήρες του κειμένου (μήκος n) και ελέγχει το ταίριασμα όλων των ζευγών χαρακτήρων από αριστερά προς τα δεξιά, μέχρι να ταιριάξουν όλα τα m ζεύγη ή να βρεθεί μία ασυμφωνία. Στην τελευταία περίπτωση, το πρότυπο μετατοπίζεται μία θέση δεξιά και επαναλαμβάνονται οι συγκρίσεις των χαρακτήρων. Στο παρακάτω παράδειγμα (εικόνα 11), αναζητείται το πρότυπο WARTHIN μέσα σε ένα κείμενο. Αρχικά το πρότυπο στοιχίζεται με την αρχή του κειμένου και το W συγκρίνεται με το Η. Επειδή δεν ταιριάζουν, η σύγκριση είναι ανεπιτυχής και δεν υπάρχει λόγος να ελεγχθούν οι υπόλοιποι 6 χαρακτήρες. Το πρότυπο μετακινείται μία θέση δεξιά και επαναλαμβάνεται η σύγκριση. Κείμενο: Η ΙΣΤΟΠΑΘΟΛΟΓΙΚΗ ΕΞΕΤΑΣΗ ΕΔΕΙΞΕ ΟΓΚΟ WARTHIN. Πρότυπο: WARTHIN(ανεπιτυχής) WARTHIN WARTHIN ---> ... ... ---> WARTHIN(επιτυχής) Εικόνα 11. Αναζήτηση με μετατόπιση μίας θέσης προς τα δεξιά τη φορά. Η αποδοτικότητα της χειρότερης περίπτωσης του αλγόριθμου brute force είναι κλάσης Θ(nm) . Για τυπικές αναζητήσεις, κατά μέσο όρο η αποδοτικότητα είναι Θ(n). 2.5.2 Αλγόριθμος Horspool Ο εντοπισμός μιας συμβολοσειράς με ωμή βία μπορεί να βελτιστοποιηθεί με μία τεχνική βελτίωσης εισόδου (input enhancement), δηλαδή μια προ-επεξεργασία της εισόδου του προβλήματος, με σκοπό την επιτάχυνση της επίλυσής του. Ο Horspool [42, 43] παρουσίασε 38 μία τέτοια τεχνική βασισμένη στον προηγούμενο αλγόριθμο των Boyer-Moore [44]. Ο αλγόριθμος αυτός καθορίζει το μέγεθος της προς τα δεξιά μετατόπισης του προτύπου, κάθε φορά που εντοπίζεται μία ασυμφωνία χαρακτήρα. Ως παράδειγμα σχετικό με την παρούσα εργασία, θεωρούμε την αναζήτηση του προτύπου ΒΙΟΨΙΑ μέσα σε κάποιο κείμενο: Κείμενο: … ΠΑΡΑΣΚΕΥΑΣΜΑ. Η ΒΙΟΨΙΑ ΕΔΕΙΞΕ … Πρότυπο: ΒΙΟΨΙΑ Εικόνα 12. Έναρξη αναζήτησης από τα αριστερά. Η αναζήτηση ξεκινάει με το γράμμα Α του προτύπου. Αν ταιριάζει με το χαρακτήρα του κειμένου με τον οποίο είναι στοιχισμένος, μετακινούμαστε προς τα αριστερά και συγκρίνουμε τα αντίστοιχα ζεύγη χαρακτήρων, προτύπου και κειμένου. Εάν ταιριάξουν όλοι οι χαρακτήρες του προτύπου, τότε έχουμε βρει μια υπό-συμβολοσειρά που ταιριάζει. Αν συναντήσουμε ασυμφωνία, μετατοπίζουμε το πρότυπο προς τα δεξιά όσες περισσότερες θέσεις είναι δυνατό, χωρίς να χάσουμε κάποιο πιθανό ταίριασμα του προτύπου στο κείμενο. Διακρίνουμε 4 περιπτώσεις: Περίπτωση 1. Εάν δεν υπάρχουν καθόλου χαρακτήρες Π στο πρότυπο, μετατοπιζόμαστε κατά ένα ολόκληρο μήκος προτύπου προς τα δεξιά, αφού δεν υπάρχει περίπτωση να συναντήσουμε ταίριασμα με Π στις επόμενες 5 θέσεις. Άρα το πρότυπο μετακινείται 6 θέσεις και ο επόμενος έλεγχος γίνεται μεταξύ του Α του προτύπου και του Ε του κειμένου: Κείμενο: … ΠΑΡΑΣΚΕΥΑΣΜΑ. Η ΒΙΟΨΙΑ ΕΔΕΙΞΕ … Πρότυπο: ΒΙΟΨΙΑ | ----->ΒΙΟΨΙΑ Εικόνα 13. Μετατόπιση ίση με το μήκος ενός προτύπου Περίπτωση 2. Εάν ο χαρακτήρας του κειμένου προς σύγκριση υπάρχει μέσα στο πρότυπο αλλά όχι στην τελευταία θέση, η μετατόπιση γίνεται ώστε να στοιχίσει τη δεξιότερη εμφάνιση του χαρακτήρα αυτού στο πρότυπο, με την εμφάνιση του χαρακτήρα στο κείμενο. Στο παρακάτω παράδειγμα, στη σύγκριση του Α με το Β παρατηρείται ασυμφωνία, αλλά το Β υπάρχει μέσα στο πρότυπο, μετά από 5 θέσεις. Άρα το πρότυπο θα μετακινηθεί 5 θέσεις ώστε τα Β προτύπου κειμένου να στοιχηθούν: Κείμενο: … ΒΑΣΙΚΟΚΥΤΤΑΡΙΚΟ. Η ΒΙΟΨΙΑ ΕΔΕΙΞΕ … Πρότυπο: ΒΙΟΨΙΑ | ---->ΒΙΟΨΙΑ Εικόνα 14. Μετατόπιση του προτύπου για στοίχιση των δύο «Β» 39 Περίπτωση 3. Εάν η σύγκριση του προτύπου είναι σύμφωνη σε m χαρακτήρες αλλά εμφανιστεί μία ασυμφωνία στην m+1 θέση, με έναν χαρακτήρα ο οποίος δεν βρίσκεται μέσα στο πρότυπο, τότε η μετατόπιση προς τα δεξιά γίνεται κατά το μήκος ενός ολόκληρου προτύπου, όπως στην Περίπτωση 1. Στο παρακάτω παράδειγμα τα 4 τελευταία γράμματα του προτύπου έχουν ταιριάξει με το κείμενο, αλλά το Π δεν ταιριάζει με το Ι και δεν υπάρχει μέσα στο πρότυπο. Οπότε το πρότυπο μετατοπίζεται 6 θέσεις δεξιά. Κείμενο: Πρότυπο: … ΥΠΟΨΙΑ. Η ΒΙΟΨΙΑ ΕΔΕΙΞΕ … ΒΙΟΨΙΑ | ---->ΒΙΟΨΙΑ Εικόνα 15. Δεν υπάρχει «Π» μέσα στο πρότυπο. Η μετατόπιση είναι ίση με το μήκος του προτύπου. Περίπτωση 4. Εάν η σύγκριση του προτύπου είναι σύμφωνη σε m χαρακτήρες αλλά εμφανιστεί μία ασυμφωνία στην m+1 θέση, με έναν χαρακτήρα ο οποίος βρίσκεται μέσα στο πρότυπο, τότε η μετατόπιση προς τα δεξιά γίνεται ώστε η επόμενη προς τα αριστερά εμφάνιση του χαρακτήρα αυτού μέσα στο πρότυπο να στοιχηθεί με το χαρακτήρα του κειμένου, όπως στην Περίπτωση 2. Στο παρακάτω παράδειγμα, το Β του κειμένου δεν συμφωνεί με το Ι του προτύπου αλλά υπάρχει μέσα στο πρότυπο και μάλιστα αριστερότερα. Οπότε το πρότυπο μετακινείται ώστε τα δύο Β να στοιχηθούν. Έτσι η επόμενη σύγκριση γίνεται μεταξύ του Α και της τελείας (.) Κείμενο: Πρότυπο: … ΒΑΘΕΙ. Η ΒΙΟΨΙΑ ΕΔΕΙΞΕ … ΒΙΟΨΙΑ | ---->ΒΙΟΨΙΑ Εικόνα 16. Το «Ι» δεν ταιριάζει με το «Β». Το πρότυπο στοιχίζεται στο «Β». Τα μεγέθη των μετατοπίσεων (μ) συναρτήσει του χαρακτήρα (χ) του κειμένου μπορούν να προ-υπολογιστούν και να αποθηκευτούν σε έναν πίνακα, ως εξής: μ(χ) = το μήκος m ολόκληρου του προτύπου, εάν ο χ δεν είναι ανάμεσα στους πρώτους m-1 χαρακτήρες του προτύπου. η απόσταση από το δεξιότερο χ μεταξύ των πρώτων m-1 χαρακτήρων του προτύπου, μέχρι τον τελευταίο του χαρακτήρα. Εικόνα 17. Τρόπος υπολογισμού των μετατοπίσεων του προτύπου 40 Παράδειγμα: αναζήτηση του String ΗΜ/ΝΙΑ. Όπως παρατηρούμε, το string ανακαλύπτεται μετά από 18 συγκρίσεις. Αν είχε χρησιμοποιηθεί απλή ωμή βία θα απαιτούνταν 51 συγκρίσεις. ΑΝΤΙΚΑΡΚΙΝΙΚΟ ΝΟΣΟΚΟΜΕΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ «ΘΕΑΓΕΝΕΙΟ» ΗΜ/ΝΙΑ: 22/12/06 HM/NIA | | | || | || | | ΗΜ/ΝΙΑ | | || | || | | ΗΜ/ΝΙΑ | || | || | | ΗΜ/ΝΙΑ || | || | | ΗΜ/ΝΙΑ | || | | ΗΜ/ΝΙΑ || | | ΗΜ/ΝΙΑ | | ΗΜ/ΝΙΑ | ΗΜ/ΝΙΑ ΗΜ/ΝΙΑ Εικόνα 18. Αναζήτηση του string ΗΜ/ΝΙΑ μέσα σε μία πρόταση με τον αλγόριθμο Horspool. Η αποδοτικότητα του αλγόριθμου Horspool είναι στη χειρότερη περίπτωση Θ(nm) αλλά για τυχαία κείμενα είναι Θ(n), είναι όμως κατά μέσο όρο γρηγορότερος από τον αλγόριθμο brute force. 41 3. ΜΕΘΟΔΟΙ ΚΑΙ ΥΛΙΚΑ 43 3.1 Περιγραφή των αρχείων Για την εκπόνηση της εργασίας χρησιμοποιήθηκαν εκτυπωμένες αναφορές ιστολογικών και κυτταρολογικών εξετάσεων παρασκευασμάτων που προέρχονταν από χειρουργικές εξαιρέσεις στην περιοχή του στόματος, της κεφαλής και του τραχήλου. Όλες οι αναφορές προέρχονταν από το Αντικαρκινικό Νοσοκομείο Θεσσαλονίκης «Θεαγένειο». Αρχικά παρελήφθησαν 3 CDs που περιείχαν συνολικά 7047 αρχεία εικόνας και τα οποία είχαν προκύψει από τη σάρωση των αντίστοιχων εκτυπωμένων εγγράφων. Τα αρχεία ήταν ομαδοποιημένα σε φακέλους ως προς τη χρονολογία σύνταξής τους. Οι εικόνες ήταν μορφοποιημένες (formatted) ως αρχεία JPEG και TIF. Στον πίνακα 1 παρουσιάζονται τα χαρακτηριστικά τους. Παρατηρούμε ότι υπάρχει ποικιλομορφία ως προς τις διαστάσεις και τις χρονολογίες των εγγράφων σε σχέση με τη μορφοποίηση τους. Οι εικόνες TIF είναι διτονικές (bitonal) με βάθος χρώματος 1 bit, δηλαδή χρησιμοποιούν δύο χρωματικούς τόνους (άσπρο και μαύρο) για κάθε pixel και δεν περιέχουν διαβαθμίσεις. Οι JPEG είναι μονόχρωμες με 256 (28) διαβαθμίζεις του γκρι. Αυτό είναι ένα σημαντικό δεδομένο για τη διαδικασία OCR. Format Έτος σύνταξης Διαστάσεις Bit depth 8 JPEG 97, 98, 02, 03, 04, 05, 06, 07, 08, 09 2480x3508 TIF 95, 96, 97, 98, 99, 00, 01, 04, 05, 06, 07, 08, 10 2496x3508 3520x2480 Σύνολο 2673 4374 1 4961x7016 4992x7016 Σύνολα 1995 ως 2010 Ποικίλες 8ή1 7047 Πίνακας 1. Χαρακτηριστικά των σαρωμένων αρχείων. Επιπλέον, μπορούμε να διακρίνουμε δύο κατηγορίες εγγράφων, ως προς το περιεχόμενό τους. Τις αναφορές ιστολογικών εξετάσεων (96,7% των αρχείων), και τις αναφορές κυτταρολογικών εξετάσεων (3,3% των αρχείων). Επίσης, υπήρχαν έγγραφα τα οποία προερχόταν από εκτύπωση με εκτυπωτή dot matrix και άλλα από εκτυπωτή laser ή inkjet. Αυτό συνεπάγεται δύο διαφορετικά σετ εκτυπωμένων χαρακτήρων. Ένα τυπικό έγγραφο αναφοράς ιστολογικής εξέτασης παρουσιάζεται στην 44 εικόνα 19. Ένα τέτοιο έγγραφο παρουσιάζει τα παρακάτω πεδία, με σειρά εμφάνισης από άνω προς τα κάτω: 1. Ονομασία, διεύθυνση και τηλέφωνο του νοσηλευτικού ιδρύματος 2. Ονομασία και τηλέφωνο του εργαστηρίου 3. Τοποθεσία και ημερομηνία σύνταξης 4. Αριθμός πρωτοκόλλου 5. Ονοματεπώνυμο ασθενή 6. Ηλικία ασθενή 7. Αριθμός μητρώου ασθενή (Α.Μ.) 8. Αριθμός παραγγελίας (Α.Ε.) 9. Ονομασία εξωτερικού ιατρείου 10. Πληροφορίες-διευκρινίσεις 11. Είδος παρασκευάσματος (σύντομη περιγραφή) 12. Αναλυτική μακροσκοπική περιγραφή του παρασκευάσματος 13. Αποτέλεσμα ιστολογικής εξέτασης 14. Κωδικοί και ονοματεπώνυμο του ιατρού που εξέτασε το παρασκεύασμα 15. Υπογραφή-σφραγίδα Παρομοίως, μία αναφορά κυτταρολογικής εξέτασης (εικόνα 20) αποτελείται από αντίστοιχα πεδία με ορισμένες διαφορές οι οποίες πρέπει να ληφθούν υπόψη: Αντί για «Είδος παρασκευάσματος», υπάρχει «Είδος κυτταρολογικής εξέτασης» Η ημερομηνία σύνταξης χρησιμοποιεί ένα μόνο ψηφίο αν πρόκειται για μονοψήφιο μήνα ή ημέρα, χωρίς «0» μπροστά Ο αριθμός πρωτοκόλλου χρησιμοποιεί την κάθετο (/) αντί για την παύλα (-) και την τελεία (.) αντί για την κάθετο (/). Αντί για το «Ονοματεπώνυμο» χρησιμοποιείται η λέξη «Όνομα» Αντί για την πρόταση : «Η ιστολογική εξέταση έδειξε:» υπάρχει η λέξη «Συμπέρασμα:» Από το σύνολο των πληροφοριών που περιέχει ένα έγγραφο, για την παρούσα έρευνα μας ενδιαφέρουν τα παρακάτω πεδία: 45 1. Η ημερομηνία σύνταξης 2. Ο αριθμός πρωτοκόλλου 3. Το ονοματεπώνυμο 4. Η ηλικία 5. Ο Α.Μ. 6. Το είδος παρασκευάσματος (σύντομη περιγραφή) 7. Το αποτέλεσμα Από τα παραπάνω, τα 1,4,6 και 7 είναι τα πλέον σημαντικά για τη στατιστική μελέτη. Δυστυχώς οι αναφορές δεν περιέχουν το φύλο του ασθενή. 46 Εικόνα 19. Δείγμα ιστολογικής αναφοράς. Με βέλη σημαίνονται τα πεδία ενδιαφέροντος. 47 Εικόνα 20. Δείγμα αναφοράς κυτταρολογικής εξέτασης. Με βέλη σημαίνονται τα πεδία ενδιαφέροντος 48 3.2 Λογισμικά OCR Όπως εξηγήθηκε στη σχετική παράγραφο, η διαδικασία OCR είναι ιδιαίτερα σύνθετη και οι τεχνικές που ακολουθούνται ποικίλλουν και βρίσκονται σε συνεχή βελτίωση. Η δημιουργία ενός τέτοιου λογισμικού είναι δύσκολη υπόθεση και μέχρι σήμερα δεν υπάρχει μέθοδος που να εγγυάται την απόλυτη αναγνώριση χαρακτήρων, αλλά μόνο με κάποιο ποσοστό επιτυχίας υπό προϋποθέσεις. Για την ολοκλήρωση της εργασίας, έπρεπε να επιλεχθεί ένα αποτελεσματικό πρόγραμμα OCR από αυτά που κυκλοφορούσαν κατά την περίοδο της συγγραφής. Μετά από σχετική έρευνα, η επιλογή αυτή περιορίστηκε μεταξύ τριών προγραμμάτων: Το πρώτο ήταν η μηχανή ανοιχτού κώδικα (open source) Tesseract και τα άλλα δύο ήταν οι δημοφιλείς εμπορικές εφαρμογές Fine Reader και OmniPage. Παρακάτω ακολουθεί μία σύντομη περιγραφή του κάθε προγράμματος και η διαδικασία που ακολουθήθηκε για την τελική επιλογή του ενός από αυτά. 3.2.1 Η μηχανή Tesseract Το Tesseract είναι ένα λογισμικό Open source για οπτική αναγνώριση χαρακτήρων πολλών γλωσσών. Η ανάπτυξή του έγινε από την Hewlett-Packard (HP) την περίοδο 1984-94 ως εμπορικό πρόγραμμα. Το 2005 η HP σε συνεργασία με το πανεπιστήμιο της Nevada (Las Vegas) απελευθέρωσε τον κώδικα και έκτοτε την επέκτασή του την ανέλαβε η Google [45]. Προς το παρόν η εφαρμογή Google-Docs χρησιμοποιεί την εν λόγω μηχανή για τις μετατροπές βιβλίων και εγγράφων σε κείμενο. Για την αναγνώριση των χαρακτήρων, το Tesseract κάνει χρήση προετοιμασμένων αρχείων εκπαιδεύσεως (training files). Το Φεβρουάριο του 2013 υπήρχαν διαθέσιμα training files για 62 γλώσσες, ανάμεσά τους τα Ελληνικά και τα Αρχαία Ελληνικά [46]. Το κείμενο που προκύπτει αποθηκεύεται με τη μορφή txt. Το πρόγραμμα δίνει τη δυνατότητα στο χρήστη να δημιουργήσει δικά του εξατομικευμένα training files μέσω δημιουργίας boxfiles και εκτέλεση του προγράμματος για κάθε ζεύγος εικόνας-χαρακτήρα. Η διαδικασία γίνεται σε περιβάλλον κονσόλας με εντολές [47]. Για παράδειγμα η εντολή: tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox εκτελεί το πρόγραμμα για μία εικόνα εκπαίδευσης και παράγει μία σειρά από αριθμητικές τιμές που περιγράφουν μαθηματικά τον κάθε χαρακτήρα, και η εντολή: tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] nobatch box.train.stderr εκπαιδεύει το πρόγραμμα σε ένα συγκεκριμένο ζεύγος boxfile. Η αρχιτεκτονική του Tesseract περιέχει διάφορες τεχνικές με πυρήνα έναν προσαρμοζόμενο ταξινομητή (adaptive classifier). Μία πλήρης περιγραφή υπάρχει στην αναφορά του Smith [48]. Το Tesseract δεν έχει γραφική διεπαφή χρήστη (Graphical User Interface – GUI) και εκτελείται σε κονσόλα. Υπάρχουν όμως αρκετές υλοποιήσεις GUI για το Tesseract, από τρίτους. Ένα 49 παράδειγμα είναι το VIET-OCR [49] για τη διαδικασία της οπτικής αναγνώρισης, και το JTessBoxEditor [50] για τη δημιουργία training files (εικόνες 21, 22). Εικόνα 21.VIET-OCR. οπτική αναγνώριση με το Ελληνικό training-file της Tesseract. Εικόνα 22. Εκπαίδευση στο JTessEditor 3.2.2 ABBYY Fine Reader Η ΑΒΒΥΥ (πρώην BIT-Software) είναι μία Ρώσικη εταιρία με έδρα στη Μόσχα με έτος ίδρυσης το 1989, η οποία παρέχει λογισμικά χειρισμού εγγράφων και OCR. Το δημοφιλές πρόγραμμά της για OCR Fine Reader, έκανε την εμφάνισή του το 1993 και έκτοτε έχει βελτιωθεί και χρησιμοποιηθεί σε πολλές περιπτώσεις τόσο από εταιρίες όπως η DELL, η EPSON και η Samsung όσο και από πανεπιστήμια, ανάμεσά τους και το πανεπιστήμιο Πατρών [51]. Το Fine Reader είναι λογισμικό κλειστού κώδικα και για αυτόν το λόγο δεν 50 είναι γνωστές οι λεπτομέρειες της υλοποίησης των τεχνικών που χρησιμοποιεί. Σύμφωνα με την ΑΒΒΥΥ, τα κυριότερα χαρακτηριστικά του προγράμματος είναι: Αναγνώριση 189 γλωσσών, χαρακτήρων από εκτύπωση dot-matrix και κείμενα που περιέχουν ταυτόχρονα παραπάνω από μία γλώσσες. Δυνατότητες training του λογισμικού και δημιουργίας μοτίβων (εικόνα 23). Επαλήθευση αναγνώρισης αμφισβητήσιμες λέξεις Εργαλεία προ-επεξεργασίας της εικόνας, όπως αλλαγή μεγέθους, περιστροφή, φιλτράρισμα και αφαίρεση θορύβου (de-skewing, despeckling) δυναμική προσαρμογή της φωτεινότητας και αντίθεσης του κάθε τμήματος της εικόνας (adaptive binarization) [52] κ.α. Τεχνολογία αναγνώρισης και διατήρησης της δομής του εγγράφου, όπως οι στήλες, οι πίνακες και τα διαγράμματα, κείμενα γραμμένα κάθετα κ.α. SDK (Software Development Tool) για πολλές γλώσσες προγραμματισμού Εξαγωγή του κειμένου σε διάφορες μορφοποιήσεις, συμπεριλαμβανομένων των pdf και docx και δημιουργία λεξικού (εικόνα 24) για τις Εικόνα 23. Training file στο Fine Reader. Αποθηκευμένες εικόνες χαρακτήρων με την ερμηνεία τους. 51 Εικόνα 24. Δημιουργία ξεχωριστού λεξικού με ιστολογικούς όρους. 3.2.3 Nuance OmniPage Η Nuance είναι μία εταιρία παραγωγής λογισμικού για την επεξεργασία φωνής και εικόνας με έδρα στη Μασαχουσέτη, Η.Π.Α.. Ιδρύθηκε το 1992. Μεταξύ των εφαρμογών της Nuance ανευρίσκονται προγράμματα αναγνώρισης φωνής, ιατρικό λογισμικό, OCR και δημιουργία στρατιωτικών εφαρμογών. Πάνω από 3,000 νοσοκομεία στις Η.Π.Α. χρησιμοποιούν λογισμικό της [53]. Το OmniPage είναι ένα λογισμικό OCR με εύχρηστο GUI, για το οποίο, όπως και παραπάνω, δεν είναι γνωστές οι τεχνικές που εφαρμόζει για την αναγνώριση χαρακτήρων. Μερικά από τα κυριότερα χαρακτηριστικά είναι τα παρακάτω [54]: Αναγνώριση περισσότερων από 120 γλώσσες εργαλεία επεξεργασίας εικόνας για μείωση του θορύβου deskew και despeckle (Normal, Halftone, Salt & Pepper) Proof reading (εικόνα 25) Εκπαίδευση λογισμικού Δημιουργία λεξικών και ανάγνωση των λεξικών του Word (εικόνα) 52 Εικόνα 25. Proof-reading στο OmniPage. Το πρόγραμμα σημαίνει κόκκινες τις λέξεις που δεν αναγνωρίζει. 3.2.4 Πειραματική σύγκριση των τριών λογισμικών Για την επιλογή του προγράμματος OCR το οποίο θα χρησιμοποιηθεί στη συνέχεια της εργασίας πραγματοποιήθηκε μία συγκριτική μέτρηση μεταξύ των τριών υποψηφίων λογισμικών. Από το σύνολο των σαρωμένων εγγράφων επιλέχτηκαν δύο έγγραφα με υποκειμενικά καλή ποιότητα εκτύπωσης. Το πρώτο ήταν εκτυπωμένο από συσκευή laser ή inkjet και το δεύτερο από συσκευή dot matrix. Οι αντίστοιχες εικόνες βρίσκονται στο Παράρτημα. Στη συνέχεια τα έγγραφα φορτώθηκαν στα τρία προγράμματα, έγινε οπτική αναγνώριση χαρακτήρων και το κάθε αποτέλεσμα αποθηκεύτηκε ως αρχείο κειμένου. Τα κείμενα διαβάστηκαν και μετρήθηκαν χειροκίνητα οι λάθος χαρακτήρες, δηλαδή οι χαρακτήρες που δεν αναγνωρίστηκαν σωστά από το πρόγραμμα. Τα αποτελέσματα παρουσιάζονται στον πίνακα 2 και στο διάγραμμα 1. Και τα τρία προγράμματα συνάντησαν μεγαλύτερη δυσκολία να αναγνωρίσουν τους χαρακτήρες του εγγράφου dot matrix. Το πρόγραμμα Fine Reader εμφάνισε το μικρότερο αριθμό σφαλμάτων με σημαντική διαφορά από τα υπόλοιπα. Τα λεπτομερή αποτελέσματα της μετατροπής υπάρχουν στο Παράρτημα. Πρόγραμμα Tesseract Fine Reader OmniPage laser 44 1 5 dot matrix 128 18 126 ΣΥΝΟΛΟ ΛΑΘΩΝ 172 19 131 Πίνακας 2. Σύγκριση αριθμού σφαλμάτων ανά δείγμα ανά πρόγραμμα. 53 Διάγραμμα 1. Αριθμός εσφαλμένων χαρακτήρων στα δύο δείγματα (laser - dot matrix) με τη χρήση των τριών προγραμμάτων 54 4. ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ 55 4.1 Ανάπτυξη του λογισμικού ανακάλυψης πεδίων Μετά τη μετατροπή των σαρωμένων εγγράφων σε αρχεία κειμένου, πρέπει να αναπτυχθεί μία εφαρμογή σε προγραμματιστικό περιβάλλον η οποία να μπορεί να ανοίξει αυτά τα αρχεία, να τα διαβάσει και να εξάγει, σε μία άλλη μορφή, τα γνωρίσματα εκείνα που είναι απαραίτητα για την ολοκλήρωση της έρευνας. Για την ανάπτυξη αυτής της εφαρμογής επιλέχθηκε το περιβάλλον Visual Studio 2010 της Microsoft και πιο συγκεκριμένα η γλώσσα προγραμματισμού Visual Basic της παραπάνω έκδοσης. Οι λόγοι της επιλογής αυτής είναι η ευχρηστία, η αξιοπιστία και ιδιαιτέρως η δυνατότητα επαναχρησιμοποίησης κώδικα και λειτουργιών από άλλες εφαρμογές. Στις επόμενες παραγράφους αναφέρονται συνοπτικά οι βασικές και ιδιαιτέρες έννοιες του προγραμματισμού σε περιβάλλοντα Windows και Visual Studio. Στην τελευταία παράγραφο περιγράφονται οι άξονες πάνω στους οποίους βασίστηκε η υλοποίηση της εφαρμογής. Ο πλήρης κώδικας βρίσκεται στο παράρτημα. 4.1.1 Το Visual Studio Το Visual Studio [56] είναι ένα πλήρες προγραμματιστικό πακέτο ανάπτυξης εφαρμογών desktop, Web XML, ASP.NET και για φορητές συσκευές (mobile). Οι γλώσσες που περιέχει είναι οι Visual Basic, Visual C# και Visual C++ και μοιράζονται το ίδιο προγραμματιστικό περιβάλλον, πράγμα το οποίο επιτρέπει τη διαμοίραση εργαλείων και την ανάπτυξη εφαρμογών με παραπάνω από μία γλώσσες (mixed-language solutions). Οι γλώσσες του Visual Studio κάνουν χρήση του πλαισίου εργασίας .ΝΕΤ (.NET Framework) το οποίο παρέχει πρόσβαση σε τεχνολογίες περεταίρω απλοποίησης της ανάπτυξης εφαρμογών. 4.1.2 Το .NET Framework Το .NET Framework [56] (dot-net) είναι μία τεχνολογία της Microsoft που παρέχει ένα ιδιαίτερο περιβάλλον εκτέλεσης του κώδικα (code-execution environment) με σκοπό την αποφυγή προβλημάτων ασυμβατότητας μεταξύ των διαφόρων εκδόσεων, την ασφάλεια και προστασία από κώδικα που προέρχεται από άγνωστες πηγές, την καλύτερη απόδοση και την εκτέλεση του κώδικα είτε τοπικά, είτε μέσω διαδικτύου είτε από απόσταση (remotely). Οι διάφορες εκδόσεις του .NET Framework (v.1 έως 4.5) μπορούν να βρίσκονται εγκατεστημένες ταυτόχρονα σε έναν υπολογιστή. Το Visual Studio 2010 επιτρέπει την ανάπτυξη μιας εφαρμογής με στόχευση σε οποιασδήποτε από τις εκδόσεις 1 έως 4 [57]. Η πρόσφατη έκδοση 4.5 απευθύνεται στο Visual Studio 2012. 4.1.3 Η βιβλιοθήκη κλάσεων του .NET Framework Η βιβλιοθήκη κλάσεων (class library) [58] του .NET Framework είναι μία συλλογή από έτοιμες κλάσεις, διεπαφές και τύπους που παρέχουν λειτουργικότητα στο σύστημα και είναι τα στοιχεία πάνω στα οποία «χτίζεται» μία εφαρμογή. Για παράδειγμα, η βιβλιοθήκη 56 System.Windows, η οποία χρησιμοποιείται και στην παρούσα εργασία, περιέχει τους τύπους για τη χρησιμοποίηση παραθύρων και στοιχείων ελέγχου στις εφαρμογές, όπως είναι τα κουμπιά, οι μπάρες και τα υπόλοιπα στοιχεία διεπαφής (user interface controls). 4.1.4 Component Object Model Το μοντέλο Component Object[59] (COM) είναι ένα αντικειμενοστεφές σύστημα για τη δημιουργία των συστατικών στοιχείων (components) μιας εφαρμογής, τα οποία μπορούν να μεταφερθούν και να χρησιμοποιηθούν σε άλλες εφαρμογές. Τα στοιχεία ActiveX των ιστοσελίδων είναι ένα παράδειγμα της τεχνολογίας COM. Στην παρούσα εργασία θα γίνει χρήση στοιχείων COM του Office μέσα στην εφαρμογή ανάγνωσης των εγγράφων βιοψίας, όπως αναφέρεται στην επόμενη παράγραφο. 4.1.5 Office Primary Interop Assemblies Για να είναι εφικτή η χρησιμοποίηση των δυνατοτήτων του Office μέσα σε κάποια εφαρμογή, χρησιμοποιούμε την Primary Interop Assembly (PIA)[60,61] για την εφαρμογή αυτή. Η PIA επιτρέπει στον κώδικα να αλληλεπιδράσει με τα αντικείμενα τύπου COM του Office. Ως παράδειγμα, στην παρούσα εργασία, θέλουμε να φτιάξουμε μία εφαρμογή που θα ανοίγει και θα διαβάζει αρχεία κειμένου μορφοποιημένα ως docx. Οπότε μπορούμε να εκμεταλλευτούμε τις έτοιμες λειτουργίες του Office μέσα από τον κώδικα, ώστε να μην χρειάζεται να ξαναγράφουμε από το μηδέν τις λειτουργίες αυτές με νέο κώδικα. Για να κάνουμε χρήση των λειτουργιών του Office μέσα από το Visual Studio, πρέπει να προσθέσουμε μία αναφορά (Reference) στις απαιτούμενες από την εφαρμογή PIAs. Στην παρούσα εργασία, έγινε χρήση της Microsoft Word 14.0 Object Library του Office 2010 η οποία αντιστοιχεί στο αρχείο Microsoft.Office.Interop.Word.dll (εικόνα 26). Εικόνα 26. Προσθήκη reference για διασύνδεση με το Office. 57 4.1.6 Λεπτομέρειες υλοποίησης Όπως αναφέρθηκε στο σχετικό κεφάλαιο, σε κάθε ένα έγγραφο αναζητούμε συγκεκριμένα πεδία ενδιαφέροντος, τα οποία θα αποτελέσουν στη συνέχεια, χαρακτηριστικά στου πίνακες της βάσης δεδομένων. Οι αναφορές ιστολογικών εξετάσεων από το 1995 ως το 2010 παρουσιάζουν μία ομοιομορφία και σταθερότητα ως προς τις θέσεις των διάφορων πεδίων τους, αλλά και ως προς τη μορφοποίηση της πληροφορίας που περιέχουν. Με αυτό το δεδομένο μπορούμε να περιγράψουμε έναν σταθερό τρόπο ανακάλυψης του κάθε πεδίου έτσι ώστε η αναζήτηση και εξαγωγή πληροφορίας να μπορεί να γίνει επαναληπτικά με τη βοήθεια κώδικα. Παρακάτω αναφέρονται τα χαρακτηριστικά των εγγράφων τα οποία επέτρεψαν τη μοντελοποίησή τους και έκαναν εφικτή τη συγγραφή του σχετικού κώδικα: Κατά την ανάγνωση του εγγράφου, η πρώτη ημερομηνία που συναντάται είναι η ημερομηνία σύνταξης του εγγράφου (πάνω δεξιά) και είναι της μορφής ΧΧ/ΧΧ/ΧΧΧΧ ή ΧΧ/ΧΧ/ΧΧ, όπου Χ είναι ένας αριθμός (ψηφίο-digit). Ο αριθμός πρωτοκόλλου βρίσκεται πάντα αμέσως μετά την ημερομηνία σύνταξης και βρίσκεται σε μία από τις ακόλουθες μορφές ΧΧΧΧ-ΧΧ/ΧΧ/ΧΧ ή ΧΧΧΧX-ΧΧ/ΧΧ/ΧΧ. Το όνομα του ασθενή ξεκινάει αμέσως μετά την άνω-κάτω τελεία της συμβολοσειράς «Ονοματεπώνυμο». (Π.χ. Ονοματεπώνυμο: ΜΑΡΙΑ ΠΑΠΑΔΟΠΟΥΛΟΥ) Το επώνυμο βρίσκεται πάντα μετά το όνομα και χωρίζεται από εκείνο με έναν χαρακτήρα κενού (space). Η ηλικία είναι ένας διψήφιος αριθμός που βρίσκεται στα δεξιά της συμβολοσειράς «Ηλικία». (Π.χ. Ηλικία: 78 ή Ηλικία: 09) Ο αριθμός μητρώου βρίσκεται πάντα μετά την ηλικία και είναι μία συμβολοσειρά digit της μορφής 0ΧΧΧΧ/ΧΧ ή ΧΧΧΧΧ Το είδος παρασκευάσματος είναι ένα μικρό σύνολο λέξεων που περιγράφει συνοπτικά το παρασκεύασμα και το οποίο πάντα ακολουθείται από την έκφραση «Για ιστολογική εξέταση παραλάβαμε...» Το αποτέλεσμα της εξέτασης βρίσκεται πάντα μετά τη μακροσκοπική περιγραφή του παρασκευάσματος και ξεκινάει με τη λέξη «έδειξε». Κατά κανόνα, η πρώτη λέξη «έδειξε» που θα βρεθεί μέσα στο έγγραφο είναι η αρχή του αποτελέσματος της βιοψίας. Στον πίνακα 3 παρουσιάζονται τα πρότυπα αναζήτησης για το κάθε πεδίο. Το υπόλοιπο κείμενο που περιέχει η αναφορά θα αγνοείται από το πρόγραμμα. Αναζητώντας τα συγκεκριμένα πρότυπα διαδικαστικά, δηλαδή με τη σειρά που δίνονται στον πίνακα, το πρόγραμμα «βλέπει» το κάθε έγγραφο όπως παρουσιάζεται στη εικόνα 27. 58 Πεδίο ενδιαφέροντος Α Ημερομηνία εγγράφου Pattern Επεξήγηση ΧΧ/ΧΧ/ΧΧΧΧ Όπου Χ αριθμός (digit). Π.χ. 30/12/2009 XX/XX/XX Β Αριθμός πρωτοκόλλου ΧΧΧΧΧ-ΧΧ/ΧΧ/ΧΧ Όπου Χ digit ΧΧΧΧ-ΧΧ/ΧΧ/ΧΧΧΧ Η αποθήκευση ξεκινάει 2 χαρακτήρες μετά το «ο» και σταματάει σε ένα χαρακτήρα κενού Όνομα Γ Ονοματεπώνυμο Η αποθήκευση σταματάει όταν διαβαστεί ένας χαρακτήρας κενού Επώνυμο Δ Ηλικία Ηλικία Η αποθήκευση ξεκινάει μετά το «α» και σταματάει όταν διαβαστούν δύο συνεχόμενα digits Ε Αριθμός Μητρώου 0ΧΧΧΧ/ΧΧ Όπου Χ digit XXXXX Ζ Είδος Παρασκευάσματος Η Αποτέλεσμα Είδος Παρασκευάσματος Η αποθήκευση ξεκινάει μετά το «ς» και σταματάει στο string «Για » έδειξε Η αποθήκευση σταματάει στο τέλος του αρχείου. Πίνακας 3. Τα πρότυπα αναζήτησης και τα χαρακτηριστικά τους. 59 Εικόνα 27. Μοντελοποίηση της αναφοράς με patterns Για την αναζήτηση των προτύπων επιλέχτηκε ο αλγόριθμος του Horspool [44] ο οποίος γράφτηκε σε γλώσσα VB 2010. Ο πλήρης κώδικας βρίσκεται στο Παράρτημα. Για την ανάγνωση των λίγων σχετικά αναφορών κυτταρολογικής εξέτασης, έγιναν οι σχετικές μετατροπές στα πρότυπα αναζήτησης. Σχετικά με τον τρόπο εξαγωγής και αποθήκευσης της πληροφορίας των πεδίων, ακολουθήθηκε η εξής διαδικασία: Το πρόγραμμα αποθηκεύει το κάθε πεδίο που ανακαλύπτει σε ένα αρχείο κειμένου ΤΧΤ ακολουθούμενο από έναν χαρακτήρα κόμματος (,). Μετά την ανακάλυψη και του τελευταίου πεδίου, δηλαδή όταν τελειώνει η ανάγνωση του κάθε εγγράφου, εγγράφεται ένας χαρακτήρας αλλαγής γραμμής στο αρχείου ΤΧΤ. Αν το πρόγραμμα αποτύχει να βρει κάποιο πεδίο, εγγράφεται το μήνυμα NotFound στη θέση του πεδίου μέσα στο αρχείο κειμένου. Στην αρχή της κάθε γραμμής εγγράφεται το όνομα του αρχείου που αναγνώστηκε (Εικόνα 28). ΑΡΧΕΙΟ,ΗΜ/ΝΙΑ,ΑΡ.ΠΡΩΤ,ΟΝΟΜΑ,ΕΠΩΝΥΜΟ,ΗΛΙΚΙΑ,Α.Μ.,ΕΙΔΟΣ ΠΑΡΑΣΚΕΥΑΣΜΑΤΟΣ,ΑΠΟΤΕΛΕΣΜΑ Παράδειγμα: SCAN0436-63.docx,14/07/2010,6704-23/06/2010, ΛΑΜΠΡΟΥ,ΓΕΩΡΓΙΟΣ,48,4280/10,Ξένο σώμα εδάφους στόματος, έδειξε άμορφο ηωσινόφιλο υλικό και μικρές αιμορραγικές διηθήσεις. Εικόνα 28. Αρχείο CSV. Οι τιμές χωρίζονται μεταξύ τους με κόμμα. 60 Με αυτόν τον τρόπο οι πληροφορίες εξάγονται ως αρχεία CSV (Comma Separated Values), μορφή που είναι συμβατή με τα DBMS και τα λογιστικά φύλλα. 4.1.7 Dioscoride Το ειδικό πρόγραμμα ονομάστηκε Dioscoride (DIscoverer Of hiStologiCal repORts and fIelD Extractor) από τον Έλληνα ιατρό και φαρμακολόγο Πεδάνιο Διοσκουρίδη (40-90 μ.Χ.) [62]. Η διεπαφή χρήστη αποτελείται από τα παρακάτω στοιχεία (εικόνα 29): Μενού σύντομης Βοήθειας (Help) και Πληροφοριών (About) Επιλογή του τρόπου γραφής της ημερομηνίας των αναφορών με δύο Radio Buttons. Οι ημερομηνία σύνταξης στις παλαιότερες αναφορές (<2001) είναι της μορφής ΧΧ/ΧΧ/ΧΧ, ενώ στις υπόλοιπες ΧΧ/ΧΧ/ΧΧΧΧ Κουμπί ανοίγματος παράθυρου διαλόγου για πλοήγηση και επιλογή του φακέλου που περιέχει τις αναφορές σε μορφή docx. (Open folder) Γραμμή κατάστασης με μπάρα προόδου εργασίας και μηνύματα ολοκλήρωσης (Ready, Please wait και Completed) Απαρίθμηση των συνολικών αρχείων του φακέλου και αριθμητική ένδειξη του τρέχοντος ανοιγμένου αρχείου (Total files και Now reading). Εικόνα 29. Dioscoride version 1.0. GUI (πάνω) και τρόπος λειτουργίας (κάτω). 61 4.2 Επιλογή του συστήματος διαχείρισης της βάσης δεδομένων Τα συστήματα διαχείρισης βάσεων δεδομένων είναι ο πιο αξιόπιστος γνωστός τρόπος οργάνωσης και διαχείρισης δεδομένων. Παρέχουν στο χρήστη δυνατότητες εκτέλεσης διάφορων λειτουργιών στη βάση δεδομένων, όπως αναζητήσεις, εκτελέσεις ερωτημάτων δημιουργία αντιγράφων ασφαλείας, διαγραφές κλπ.. Επίσης με τους περιορισμούς πρόσβασης παρέχουν ασφάλεια στα δεδομένα. Στην αγορά υπάρχουν διαθέσιμα πολλά συστήματα DBMS, το καθένα με τα πλεονεκτήματά και τα μειονεκτήματά του ως προς την ασφάλεια, την αξιοπιστία, την ευχρηστία και την απόδοση. Κατά την ώρα της συγγραφής, τα κυριότερα από αυτά ήταν ο Microsoft (MS) SQL Server 2012, η Oracle 11g, η IBM DB2, η MySQL 5.6 και η MS Access 2013. Για τη διαχείριση της ΒΔ των ιστολογικών αναφορών, η επιλογή περιορίστηκε στα MS SQL Server και MySQL. Κάποια χαρακτηριστικά αυτών των συστημάτων αναφέρονται συνοπτικά παρακάτω. 4.2.1 Microsoft SQL Server Ο MS SQL Server είναι ένα πολύ δημοφιλές DBMS. Η πρώτη version του παρουσιάστηκε το 1989. Στην πιο πρόσφατη version του 2012, έχει 7 διαφορετικές εκδόσεις (editions) οι οποίες είναι προσαρμοσμένες στις ανάγκες των διαφόρων ειδών χρήστη. Η Express edition παρέχεται δωρεάν αλλά έχει περιορισμούς σε σχέση με τις άλλες. Ο MS SQL Server χρησιμοποιεί τις γλώσσες Transact SQL και ANSI SQL. Μερικές από τις νέες δυνατότητες που παρέχει η τελευταία έκδοση του DBMS της Microsoft είναι οι παρακάτω [63]: Υψηλός βαθμός διαθεσιμότητας (Always On) Γρήγορη ανακάλυψη δεδομένων (Rapid data discovery) μέσω του εργαλείου Power View Δυνατότητες Cloud (scale on demand) Statistical semantic search Ανακάλυψη μεταδεδομένων (metadata discovery) 4.2.2 MySQL Η MySQL είναι ένα DBMS ανοιχτού κώδικα. Η version 3.19 ήταν η πρώτη που έγινε διαθέσιμη στο κοινό, το 1996. Το βασικό πρόγραμμα DBMS εκτελείται ως server και παρέχει πολυχρηστική (multi-user) και πολυνηματική (Multi-threaded) πρόσβαση στις ΒΔ τις οποίες διαχειρίζεται. Υποστηρίζει την τεχνολογία cloud. Μερικά χαρακτηριστικά της πιο πρόσφατης έκδοσης (v5.6) είναι τα εξής [64]: Καλύτεροι χρόνοι εκτέλεσης αιτημάτων και καλύτερη απόδοση 62 Scalability Νέες δυνατότητες μέσω Use cases, όπως Αναζήτηση πλήρους κειμένου (full text search) και transportable tablespaces Υψηλή διαθεσιμότητα (high availability) Βελτιώσεις ασφάλειας (κρυπτογραφία κωδικών, hashing κ.α.) 4.2.3 Σύγκριση μεταξύ των δύο DBMS και επιλογή Όπως ειπώθηκε παραπάνω, όλα τα DBMS έχουν πλεονεκτήματα και μειονεκτήματα. Επιπλέον οι εταιρίες παρουσιάζουν το δικό τους σύστημα ως καλύτερο από τα άλλα. Σύμφωνα με τη Microsoft η σύγκριση του SQL Server έναντι της MySQL επικεντρώνεται στα παρακάτω σημεία [65]: 1. Η Express edition του MS SQL Server είναι δωρεάν, όπως και η MySQL. 2. Η MySQL περιορίζεται από το λειτουργικό σύστημα ως προς τους πόρους που μπορεί να χρησιμοποιήσει (CPU, RAM, BP). 3. Η MySQL είναι συμβατή με πολλά λειτουργικά συστήματα, ενώ ο MS SQL Server μόνο με τα Windows. 4. Και οι δύο υποστηρίζουν λειτουργίες Core DB. 5. Η MySQL την περίοδο 2004-2010 παρουσίασε 91 ατέλειες στο μοντέλο ασφάλειας, ενώ o MS SQL Server μόλις 25. 6. Ο MS SQL Server έχει μια σειρά από χαρακτηριστικά που η MySQL δεν έχει: Online Backup, Reporting, ειδική έκδοση Cloud, Autotuning και Sync. Από την πλευρά της MySQL, υπάρχουν τα εξής επιχειρήματα [66]: 1. Η εγκατάσταση της MySQL είναι ευκολότερη και γρηγορότερη από αυτή του MS SQL ο οποίος απαιτεί επιπλέον την εγκατάσταση του .NET Framework 2. Η μηχανή αποθήκευσης (storage engine) της MySQL είναι επιλέξιμη και εναλλάξιμη ανάμεσα σε διάφορες διαθέσιμες μηχανές όπως οι MyISAM, InnoDB, και άλλες. 3. Η MySQL ισχυρίζεται ότι έχει πολλά από τα χαρακτηριστικά του MS SQL Server, όπως High availability, ANSI SQL, Stored Procedures, dynamic memory caches, δυνατότητα terabytes, αυτόματη ανάκτηση (crash recovery), εργαλεία GUI κ.α.. 4. Παρέχει Unique Query Cache, δηλαδή αποθήκευση του ερωτήματος και αποτελέσματος σε ξεχωριστή μνήμη. 63 5. Σχετικά με την ασφάλεια, όπως και ο MS SQL Server έχει δυνατότητες GRANT/REVOKE, κρυπτογραφία δεδομένων, ασφαλή σύνδεση SSL και object privileges. Σχετικά με την απόδοση των δύο συστημάτων, ο Bassil (2012) [67] σε μία πρόσφατη συγκριτική μελέτη πέντε συστημάτων DBMS δίνει προβάδισμα στον MS SQL Server ως προς το χρόνο εκτέλεσης αλλά η MySQL εμφάνισε λιγότερες απαιτήσεις σε μνήμη και επεξεργαστή για την εκτέλεση των ίδιων εργασιών. Ο MS SQL Server παρέχει δυνατότητες απόδοσης εξατομικευμένων ρόλων στους χρήστες (role based access control - RBAC) [68] ενώ οι αντίστοιχες δυνατότητες της MySQL είναι πολύ περιορισμένες [69]. Το γεγονός αυτό προσδίδει καλύτερα χαρακτηριστικά ασφάλειας των ΒΔ. Επιπλέον ο MS SQL Server στις editions Enterprise και Business περιέχει εργαλεία εξόρυξης δεδομένων (ίδια πηγή με παραπάνω). Λαμβανομένου υπόψη ότι δεν υπάρχει σαφής εικόνα για το πιο σύστημα είναι καλύτερο για την παρούσα περίπτωση και ότι και τα δύο συστήματα είναι αρκετά διαδεδομένα, και ασφαλή, η επιλογή έγινε σύμφωνα με την κρίση του συγγραφέα. Επιλέχτηκε ο MS SQL Server 2012 Enterprise λόγω των καλύτερων χαρακτηριστικών ασφάλειας και της – υποκειμενικά- καλύτερης ευχρηστίας (εικόνα 30). Μαζί εγκαταστάθηκε και η αντίστοιχη έκδοση του Management Studio. Εικόνα 30. Εγκατάσταση του MS SQL Server 2012. 64 4.3 Σχεδίαση της βάσης δεδομένων 4.3.1 Ορισμός του μοντέλου συσχετίσεων Το μοντέλο Οντοτήτων Συσχετίσεων (ΟΣ) για την περιγραφή της δομής των δεδομένων στη βάση περιλαμβάνει τρεις οντότητες (entities) με τα χαρακτηριστικά τους, και δύο συσχετίσεις (relationships): Σύνολο Οντοτήτων: Ασθενής (Patient), Αναφορά (Report), Παρασκεύασμα (Specimen) Σύνολο Συσχετίσεων: ΕΧΕΙ (HAS), ΠΕΡΙΕΧΕΙ (CONTAINS). Η οντότητα Patient έχει τα χαρακτηριστικά Αριθμός μητρώου (Patient_ID), Όνομα (Name) και Επώνυμο (Surname). Η Αναφορά (Report) έχει χαρακτηριστικά την Ημ/νία σύνταξης (Date), τον Αριθμό Πρωτοκόλλου (Report_ID), το Αποτέλεσμα (Result), το Όνομα αρχείου (filename) και την Ηλικία (Age). Η επιλογή της Ηλικίας ως χαρακτηριστικό του Report και όχι του Patient, θα εξηγηθεί στην παράγραφο των Περιορισμών Ακεραιότητας. Το filename είναι το όνομα του σαρωμένου αρχείου εικόνας. Το Παρασκεύασμα (Specimen) χαρακτηρίζεται από τη συνοπτική περιγραφή του δηλαδή το Είδος Παρασκευάσματος (Description) και έναν αριθμό ταυτότητας (Specimen_ID). Το παρασκεύασμα θεωρήθηκε ξεχωριστή οντότητα, αν και θα μπορούσε να είναι χαρακτηριστικό της Αναφοράς. Αυτό έγινε σκόπιμα γιατί παρατηρήθηκε ότι τα είδη των παρασκευασμάτων παρουσιάζουν διακριτότητα ως προς τον τίτλο τους και είναι σχετικά εύκολο να κατηγοριοποιηθούν. Από την άλλη, το Αποτέλεσμα εμφανίζει μεγάλη ποικιλομορφία και αρκετό ελεύθερο κείμενο και δεν ήταν δυνατό σε αυτή τη φάση να κατηγοριοποιηθεί. Θα σημειωθεί, όμως, ως δυνατότητα μελλοντικής βελτίωσης του συστήματος. Οι συσχετίσεις των οντοτήτων περιλαμβάνουν : Τη συσχέτιση μεταξύ του Patient και Report. Αυτή η συσχέτιση είναι με πληθικό λόγο 1:N, δηλαδή ένας ασθενής μπορεί να ΕΧΕΙ Ν αναφορές, αλλά μία αναφορά ΕΧΕΙ έναν μόνο ασθενή. Ο χειρουργός μπορεί να έχει στείλει Ν δείγματα του ιδίου ασθενή για εξέταση, άρα θα υπάρχουν Ν αναφορές. Όμως η κάθε αναφορά περιέχει το όνομα ενός και μόνο ασθενή. Τη συσχέτιση Report-Specimen. Αυτή η συσχέτιση είναι τύπου πολλά προς πολλά, με πληθικό λόγο Μ:N. Μία αναφορά μπορεί να ΠΕΡΙΕΧΕΙ Μ είδη παρασκευασμάτων (συνήθως Μ=1, αλλά βρέθηκαν αναφορές με περισσότερα ταυτόχρονα παρασκευάσματα). Αντίστοιχα, ένα είδος παρασκευάσματος δύναται να βρίσκεται σε Ν αναφορές. Για παράδειγμα, το specimen «Όγκος δεξιάς παρωτίδας» μπορεί να βρίσκεται σε 20 αναφορές διαφορετικών ασθενών. Σημείωση: Το χαρακτηριστικό Age θα ήταν προτιμότερο να αντικατασταθεί από την Ημερομηνία Γέννησης με υπολογισμό για κάθε ασθενή. Ωστόσο αυτό δεν κρίθηκε απαραίτητο γιατί για κάθε ασθενή μας ενδιαφέρει η ηλικία στην οποία βρισκόταν όταν εμφάνισε το συγκεκριμένο πρόβλημα υγείας. 65 Εικόνα 31. Διάγραμμα Οντοτήτων - Συσχετίσεων. ER diagram 4.3.2 Μετατροπή του μοντέλου συσχετίσεων σε σχεσιακό Για την οντότητα Patient είναι απαραίτητος ένας πίνακας με τέσσερις στήλες για τα αντίστοιχα χαρακτηριστικά. Το πρωτεύον κλειδί (primary key) του πίνακα Patient είναι το Patient_ID. Η οντότητα Report μετασχηματίζεται σε έναν πίνακα με τέσσερις στήλες για τα αντίστοιχα χαρακτηριστικά και ένα ακόμη πεδίο για τα ξένο κλειδί (foreign key) του Patient. Αυτό είναι απαραίτητο γιατί η σχέση είναι 1:N. Το primary key του Report είναι το Report_ID. Η οντότητα Specimen χρειάζεται έναν πίνακα με δύο στήλες για τα χαρακτηριστικά της. Εδώ, primary key είναι το Specimen_ID. Η συσχέτιση Contain χρειάζεται έναν δικό της πίνακα ο οποίος θα περιέχει τα κλειδιά των πινάκων Specimen και Report. Το κλειδί του Contain είναι σύνθετο (composite) και αποτελείται από τα δύο προαναφερθέντα ξένα κλειδιά. Το σχεσιακό μοντέλο παρατίθεται στην εικόνα 32. Patient(Patient_ID, Name, Surname) Report(Report_ID, Patient_ID, Date, Result, Filename, Age) Specimen(Specimen_ID, Description) Contain(Report_ID, Specimen_ID) Εικόνα 32. Το σχεσιακό μοντέλο της ΒΔ 66 4.3.3 Περιορισμοί ακεραιότητας (Integrity Constraints) Οι περιορισμοί ακεραιότητας πρέπει να ισχύουν σε όλα τα στιγμιότυπα της ΒΔ. Ως προς τους περιορισμούς κενών τιμών, κάποια από τα χαρακτηριστικά των πινάκων θεωρητικά θα έπρεπε να μπορούν να πάρουν την τιμή NULL (κενό). Στην περίπτωσή μας, παρατηρήθηκε άγνωστο λόγο σε κάποιες αναφορές έλειπαν η ηλικία του ασθενή ή ο αριθμός πρωτοκόλλου ή ο A.M. ή δεν μπόρεσαν να αναγνωστούν λόγω αδυναμίας της OCR. Εκτός από την ηλικία, τα άλλα δύο χαρακτηριστικά αποτελούν πρωτεύοντα κλειδιά πινάκων και δυστυχώς, δεν μπορούν να αντικατασταθούν από ένα υποθετικό composite key. Για παράδειγμα, στον πίνακα Report(Report_ID, Patient_ID, Date, Result, Age) στην περίπτωση που λείπει το Report_ID δηλαδή ο Αρ.Πρωτ. θα έπρεπε να τεθεί ως κλειδί ο συνδυασμός Date, Result. Όμως ένας τέτοιος συνδυασμός δεν θα προσδιόριζε μοναδικά (μονοσήμαντα) την οντότητα Report, γιατί θα υπήρχαν και άλλα reports που θα είχαν το ίδιο σύνθετο κλειδί. Το ίδιο ισχύει και για τον πίνακα Patients, καθώς υπάρχουν ασθενείς με το ίδιο ονοματεπώνυμο, και η δημιουργία ενός σύνθετου κλειδιού χρησιμοποιώντας όλα τα υποψήφια/δευτερεύοντα γνωρίσματα θα περιέπλεκε πολύ την κατάσταση. Για την επίλυση του προβλήματος αυτού, όπως θα αναφερθεί στη σχετική παράγραφο, εντοπίστηκαν οι αναφορές που είχαν ελλείψεις στα κρίσιμα πεδία και συμπληρώθηκαν με αυθαίρετες αλλά μοναδικές τιμές: Στους ελλείποντες Α.Μ. εισήχθησαν τιμές της μορφής «TΧΧΧΧΧΧ» ενώ στους ελλείποντες Αρ. Πρωτ. τιμές «ΠΧΧΧΧΧΧ». Με αυτόν τον άτυπο τρόπο, εξασφαλίστηκε η απαίτηση για την ακεραιότητα των οντοτήτων (entity integrity), δηλαδή κάθε γραμμή του πίνακα να προσδιορίζεται μοναδικά από το primary key του πίνακα. Η ηλικία, αν και είναι φυσικό γνώρισμα ενός ασθενή και όχι της αναφοράς αυτής καθαυτής, επιλέχτηκε να οριστεί ως χαρακτηριστικό του Report. Ο λόγος είναι ότι υπάρχουν ασθενείς στους οποίους αντιστοιχούν παραπάνω από μία αναφορές, διαφορετικών ετών. Επομένως, σε αυτές η ηλικία του ασθενή θα έχει διαφορετική τιμή. Αν η ηλικία ήταν χαρακτηριστικό του Ασθενή, τότε ένα πρωτεύον κλειδί θα έπρεπε να αντιστοιχεί σε περισσότερες από μία ηλικίες για το ίδιο Α.Μ.. Κάτι τέτοιο όμως αντιτίθεται στην αρχή της μοναδικότητας του κλειδιού. Για να επιλυθεί αυτό το πρόβλημα θα έπρεπε να υπολογιστεί για τον κάθε ασθενή η ημερομηνία γέννησής του, ως η διαφορά της ηλικίας και της ημ/νίας σύνταξης μίας αναφοράς του, και να χρησιμοποιηθεί αυτή αντί της ηλικίας. Εναλλακτικά, επιλέχθηκε η ηλικία να αποτελέσει χαρακτηριστικό του πίνακα Reports γιατί ταιριάζει καλύτερα και με το νόημα της ερμηνείας μιας ιστολογικής εξέτασης. Λέμε, δηλαδή για παράδειγμα ότι η ιστολογική εξέταση με αρ.πρωτ Χ έδειξε όγκο του Warthin σε άτομο ηλικίας 18 ετών. Άρα συνδέεται εννοιολογικά με τα άλλα χαρακτηριστικά του Reports. Για δε το πεδίο Age, επιτράπηκε να παίρνει την τιμή NULL στις περιπτώσεις που η ηλικία λείπει. 67 4.3.4 Το περιβάλλον MS SQL Server Management Studio Το Management Studio είναι το γραφικό περιβάλλον διαχείρισης των ΒΔ του MS SQL Server. Όλες οι λειτουργίες όπως η δημιουργία η διαγραφή και η τροποποίηση των ΒΔ γίνονται μέσα από τα εργαλεία του μενού. Για τη δημιουργία μίας νέας βάσης, επιλέχθηκε στον Object Explorer> Databases > New Database (εικόνα) και δόθηκε το όνομα OralMaxFac στη νέα ΒΔ (εικόνα 33). Εικόνα 33. Δημιουργία νέας ΒΔ. 4.3.5 Δημιουργία των πινάκων της ΒΔ Για τη δημιουργία ενός πίνακα επιλέγεται στον Object Explorer> Databases> OralMaxFac> Tables >New Table. Για την OralMaxFac είναι απαραίτητοι τέσσερις πίνακες: 1. Πίνακας Patients (εικόνα 34). Ο πίνακας αυτός ορίζεται με 3 στήλες. Το Patient_ID είναι της μορφής 0ΧΧΧΧ/ΧΧ ή XXXXX οπότε ορίστηκε με τύπο nvarchar(8). Τα name, surname ορίστηκαν nvarchar μέγιστου μήκους 50 χαρακτήρων το καθένα. Το patient_ID τέθηκε primary key. Εικόνα 34. Δομή πίνακα Patients. 2. Πίνακας Reports (εικόνα 35). Το Reports_ID είναι της μορφής ΧΧΧΧ-ΧΧ/ΧΧ/ΧΧΧΧ και ορίζεται ως nvarchar(15) και primary key. Το Date ορίζεται ως date VARCHAR(10). 68 Το αποτέλεσμα ορίζεται TEXT. Το Filename ορίστηκε ως VARCHAR(50). Για την ηλικία επιλέχτηκε ο τύπος TINYINT (τιμές 0-255) και καταλαμβάνει 1 byte, έναντι του απλού INT που καταλαμβάνει 4 bytes. Εικόνα 35. Δομή πίνακα Reports. 3. Πίνακας Specimens (εικόνα 36). Περιέχει δύο στήλες. Το Description (nvarchar) για τη συνοπτική περιγραφή και το Specimen_ID (SMALLΙΝΤ) με τιμές 0-65535 και χώρο 2 bytes, το οποίο είναι PRIMARY KEY. Υποθέτουμε ότι τα είδη παρασκευασμάτων είναι κατηγοριοποιημένα και το κάθε είδος έχει ένα ID. Διαφορετικά θα έπρεπε να χρησιμοποιηθεί το data type TEXT για το description. Εικόνα 36. Δομή πίνακα Specimens 4. Πίνακας συσχετίσεων Contain (εικόνα 37). Περιέχει τα κλειδιά Specimen_ID και Report_ID τα οποία ορίζονται στους ίδιους τύπους με τα αντίστοιχα primary keys των παραπάνω πινάκων. Εικόνα 37. Δομή του πίνακα συσχετίσεων Contain. Ακολούθως ορίζονται οι συσχετίσεις μεταξύ των πινάκων δημιουργώντας τα απαραίτητα foreign keys με εντολές SQL (εικόνα 38). 69 ALTER TABLE dbo.reports ADD CONSTRAINT report_patient FOREIGN KEY(patient_ID) REFERENCES patients(patient_ID) ALTER TABLE dbo.contain ADD CONSTRAINT contain_report FOREIGN KEY(report_ID) REFERENCES reports(report_ID) ALTER TABLE dbo.contain ADD CONSTRAINT contain_specimen FOREIGN KEY(specimen_ID) REFERENCES specimens(specimen_ID); Εικόνα 38. Δημιουργία των foreign keys. Από τον Object Explorer, στο OralMaxFac>DatabaseDiagrams>New Database Diagram δημιουργείται το διάγραμμα της βάσης δεδομένων OralMaxFac στο οποίο φαίνονται σχηματικά οι πίνακες, τα χαρακτηριστικά, τα κλειδιά και οι συσχετίσεις (εικόνα 39). patients * patient_ID reports * report_ID surname name patient_ID date result filename age contain report_ID specimen_ID specimens specimen_ID description Εικόνα 39. Το διάγραμμα της ΒΔ OralMaxFac. 70 4.3.6 Ασφαλής σχεδιασμός Ο MS SQL Server παρέχει δυνατότητες επιλογής προκαθορισμένων ρόλων (fixed roles) ή δημιουργίας νέων ρόλων (flexible roles) για τη ρύθμιση των προνομίων των χρηστών και την ασφαλή σχεδιασμό της βάσης [71]. Για τη ΒΔ OralMaxFac θα διακρίνουμε τέσσερα είδη χρηστών: τον ιδιοκτήτη (owner_), το διαχειριστή περιορισμένων προνομίων (little_admin), τον ιατρό (doctor) και το νοσηλευτικό προσωπικό (nurse) (εικόνα 40): 1. Ο owner_ θα μπορεί να πραγματοποιήσει όλες τις λειτουργίες συντήρησης και ρύθμισης στη βάση και μπορεί επιπλέον να σβήσει τη βάση. Ανατίθεται ο fixed ρόλος db_owner. 2. Ο little_admin θα έχει πλήρη προνόμια και δυνατότητα προσθήκης, διαγραφής και αλλαγής των δεδομένων. Ανατίθεται ο fixed ρόλος db_datawriter. 3. Ο doctor θα έχει το προνόμιο εισαγωγής, επιλογής και αναζήτησης μεταξύ συσχετισμένων πινάκων. 4. Ο nurse θα έχει μόνο το προνόμιο εισαγωγής δεδομένων στους πίνακες. USE OralMaxFac; /* Creation of roles */ CREATE ROLE owner_ AUTHORIZATION db_owner; CREATE ROLE little_admin AUTHORIZATION db_datawriter; /* add, delete, change data all tables*/ CREATE ROLE doctor; CREATE ROLE nurse; GO /* Grant Privileges */ GRANT INSERT,SELECT,REFERENCES ON patients To doctor; GRANT INSERT,SELECT,REFERENCES ON reports To doctor; GRANT INSERT,SELECT,REFERENCES ON contain To doctor; GRANT INSERT,SELECT,REFERENCES ON specimens To doctor; GRANT INSERT ON patients To nurse; GRANT INSERT ON reports To nurse; GRANT INSERT ON contain To nurse; GRANT INSERT ON specimens To nurse; GO Εικόνα 40. Εντολές SQL για δημιουργία ρόλων. 71 5. ΑΠΟΤΕΛΕΣΜΑΤΑ 73 5.1 Οπτική αναγνώριση χαρακτήρων και επαλήθευση Η οπτική αναγνώριση των 7,047 εγγράφων έγινε στο Fine Reader 11. Το αποτέλεσμα ήταν ισάριθμα αρχεία docx. Η διαδικασία έγινε σταδιακά και διήρκεσε περίπου 20 ημέρες (περίπου 350 έγγραφα ημερησίως). Μετά την OCR γινόταν οπτικός έλεγχος των αρχείων docx και διόρθωση τυχόν λαθών. Η διαδικασία περιελάμβανε δύο επιπλέον εργασίες: α) Την εκπαίδευση του λογισμικού σε ένα αρχικό δείγμα εγγράφων και β) την επαλήθευση λέξεων για τη δημιουργία ειδικού λεξικού. 5.1.1 Εκπαίδευση του λογισμικού OCR Το Fine Reader περιέχει ενσωματωμένα αρχεία για την αναγνώριση των ελληνικών χαρακτήρων (μοτίβα). Για τα βέλτιστα όμως αποτελέσματα στην OCR, έγινε εκπαίδευση (training) του λογισμικού στα δύο σετ χαρακτήρων των εκτυπωμένων εγγράφων. Όπως έχει ειπωθεί, τα έγγραφα ήταν εκτυπωμένα με μεθόδους dot matrix ή laser. Αρχικά έγινε μια δειγματοληψία 10 εγγράφων dot matrix και 10 laser και με αυτό το δείγμα έγινε εκπαίδευση του Fine Reader και δημιουργία ειδικού μοτίβου αναγνώρισης. Το μοτίβο αυτό χρησιμοποιήθηκε επικουρικά στο ήδη υπάρχον πρότυπο του προγράμματος. Στην εικόνα 41 φαίνονται οι σχετικές ρυθμίσεις. Στην εικόνα 42 παρουσιάζεται το εργαλείο εκπαίδευσης. Το πρόγραμμα εντοπίζει τους διφορούμενους χαρακτήρες μέσα στην εικόνα και στη συνέχεια ο χρήστης πληκτρολογεί τη σωστή ερμηνεία του καθενός. Έτσι την επόμενη φορά που συναντάται ο ίδιος χαρακτήρας, το πρόγραμμα ξέρει να τον ερμηνεύσει σωστά. 74 Εικόνα 41. Ρυθμίσεις επιλογών ανάγνωσης των εγγράφων για εκπαίδευση. Εικόνα 42. Training στην αναγνώριση χαρακτήρων. 75 5.1.2 Δημιουργία λεξικού Το Fine Reader δίνει τη δυνατότητα δημιουργίας λεξικού ειδικών όρων στην περίπτωση που η ορολογία του κειμένου είναι πολύ εξειδικευμένη δεν περιέχεται στο standard ενσωματωμένο λεξικό. Οι ιστολογικές αναφορές περιέχουν ένα μεγάλο πλήθος από τέτοιους όρους. Η ύπαρξη ενός εξατομικευμένου λεξικού βελτιώνει πολύ τα αποτελέσματα της διαδικασίας OCR, καθώς το πρόγραμμα εκτός από τους μεμονωμένους χαρακτήρες, προσπαθεί να αναγνωρίσει και λέξεις. Κατά την αρχική δειγματοληπτική μετατροπή επιλέχτηκε το Proof Reading από το μενού των εργαλείων. Με αυτήν το πρόγραμμα επισημαίνει τις άγνωστες λέξεις του κάθε εγγράφου και προτρέπει το χρήστη να τις προσθέσει στο λεξικό ή να τις παραβλέψει. Έτσι, μετά την OCR, σε ξεχωριστό παράθυρο γίνεται η επαλήθευση και ο εμπλουτισμός του λεξικού με καινούριους όρους (εικόνα 43). Εικόνα 43. Proof reading: Το πρόγραμμα εντοπίζει τους άγνωστους όρους. Το πρόγραμμα δίνει τη δυνατότητα κοινής χρήσης του λεξικού αυτού με το MS Word, γεγονός που διευκόλυνε περισσότερο τον εμπλουτισμό του κατά την οπτική επαλήθευση των εγγράφων σε δεύτερη φάση. Το λεξικό που δημιουργήθηκε, στην τελική του μορφή περιείχε 1520 ειδικούς ιστολογικούς όρους μαζί με τις διάφορες εκδοχές τους οι οποίοι παρατίθενται στο Παράρτημα. 76 5.1.3 Έλεγχος και επαλήθευση Μετά τη μετατροπή των σαρωμένων εγγράφων σε έγγραφα docx, το επόμενο βήμα ήταν η χειροκίνητη οπτική σύγκριση του κάθε εγγράφου με το πρωτότυπο σαρωμένο αρχείο. Η χρονοβόρα αυτή διαδικασία αυτή ήταν απαραίτητη δεδομένης της ευαισθησίας και σημαντικότητας των πληροφοριών που περιέχουν οι αναφορές. Η λάθος αναγνώριση ενός χαρακτήρα σε ένα κρίσιμο σημείο του κειμένου μπορεί να έχει επιπτώσεις στη μετέπειτα στατιστική ανάλυση. Ιδιαίτερη προσοχή δόθηκε στην επαλήθευση των ηλικιών και των αριθμών μητρώου δηλαδή στα πεδία που περιέχουν αριθμούς, ενώ τα πιθανά λάθη του υπόλοιπου κειμένου που αφορούσαν σε λέξεις έγιναν αντιληπτά ευκολότερα. Με τη χρήση της αυτοματοποιημένης σήμανσης άγνωστων λέξεων στο MS Word, ειδικοί όροι οι οποίοι είχαν παραληφθεί κατά την πρώτη φάση της επαλήθευσης στο Fine Reader, τώρα προστέθηκαν στο λεξικό. Κατά τη διαδικασία του ελέγχου, βρέθηκαν 250 αρχεία τα οποία περιείχαν σημαντικό αριθμό σφαλμάτων και δεν ήταν δυνατή η διόρθωσή τους, αλλά απαιτούνταν πληκτρολόγησή τους από μηδενική βάση. Τα αρχεία αυτά διαγράφτηκαν και οι αντίστοιχες σαρωμένες εικόνες τοποθετήθηκαν σε έναν ξεχωριστό φάκελο. Οι λόγοι για τους οποίους τα αρχεία αυτά δεν αναγνωρίστηκαν ήταν η πολύ χαμηλή ποιότητα εκτύπωσης (έλλειψη μελανιού), διάφορες φθορές και χαμηλό contrast. Τα περισσότερα από τα λάθη που ανακαλύφθηκαν, διορθώθηκαν με μία εξατομικευμένη διαδικασία με χρήση μακροεντολών, όπως θα εξηγηθεί στην επόμενη ενότητα. 77 5.2 Βελτιστοποίηση με μακροεντολές VBA Κατά τον οπτικό έλεγχο που προηγήθηκε, παρατηρήθηκε ότι σε αρκετά έγγραφα υπήρχαν συγκεκριμένα λάθη που επαναλαμβάνονταν λόγω της μέτριας ποιότητας εκτύπωσης των αρχικών εγγράφων. Για παράδειγμα, στις περισσότερες των περιπτώσεων, η OCR απέτυχε να ξεχωρίσει τα διαλυτικά σημεία πάνω από το γράμμα γιώτα (ϊ) με αποτέλεσμα να το αναγνωρίσει ως ταφ (τ). Έτσι όλες οι λέξεις που περιείχαν το τμήμα «μυϊκ» όπως «μυϊκές ίνες» εμφάνιζαν έναν ανεπιθύμητο χαρακτήρα ταφ μετά το «υ». Άλλο παράδειγμα είναι η απώλεια της κάθετης γραμμής του «Ε» στη λέξη «Είδος» με αποτέλεσμα να ερμηνεύεται ως ξι (Ξ). Αυτό συνέβη επειδή ο τίτλος «Είδος παρασκευάσματος» ξεκινά πολύ αριστερά στα έγγραφα με αποτέλεσμα το έψιλον άλλες φορές να είναι οριακά κομμένο στο αριστερό του μέρος και άλλοτε ξεθωριασμένο. Με έναν σύντομο (χειροκίνητο) οπτικό έλεγχο των αρχείων, σημειώθηκαν τα συχνότερα εμφανιζόμενα σφάλματα της OCR τα οποία παρουσιάζονται στον πίνακα. Σε αυτό το σημείο το πρόβλημα εντοπιζόταν στο γεγονός ότι συνολικά υπήρχαν αρκετά σφάλματα στα έγγραφα σε ποσότητα, αλλά περιορισμένης ποικιλίας, η οποία ήταν γνωστή. Γνωρίζουμε ότι ένα τυποποιημένο σφάλμα που επαναλαμβάνεται σε πολλαπλά έγγραφα χωρίς ιδιαίτερη ποικιλομορφία, είναι δυνατόν να διορθωθεί μαζικά με το συνδυασμό των κατάλληλων μακροεντολών (macros) σε περιβάλλον VBA (Visual Basic for Applications) στο MS Office. Για παράδειγμα, μπορούμε να συντάξουμε ένα μικρό κομμάτι κώδικα με εντολές VBA, το οποίο να αναζητά τη λέξη «Ξίδος» σε όλα τα έγγραφα ενός φακέλου και να την αντικαθιστά με τη λέξη «Είδος» η οποία είναι και η σωστή. Ο πλήρης κώδικας βρίσκεται στο Παράρτημα. Παρακάτω (εικόνα 44) δίνεται ο ψευδοκώδικας της διαδικασίας και αναφέρονται κάποια βασικά σημεία της υλοποίησης. ΛΕΞΗ εμφανίζει κυττάρων μυϊκές ώ ιστολογική Βιοψία F.N.A. εξεργασία Ονοματεπώνυμο χόριο ΙΣΤΟΠΑΘΟΛΟΓΙΚΗ ΕΣΦΑΛΜΕΝΗ ΕΚΔΟΧΗ εμιρανίζει κυπάρων μυτκές ή μυΙκές ιίι ιστοιογική Βιοιρία P.N.A. εζεργασία Oνο?α?επ?νυ?? χ?ρ?ο ???ΟΠΑΘΟΛΟΓΙΚ? Πίνακας 4. Παραδείγματα συχνών σφαλμάτων της OCR. Το “?” δηλώνει μια ποικιλομορφία στην εμφάνιση των χαρακτήρων στη συγκεκριμένη θέση, δηλαδή πολλαπλές εκδοχές της λέξης. 78 //Search and replace all files in a folder Pseudocode φ = ΤΡΕΧΩΝ ΦΑΚΕΛΟΣ; όνομα_αρχείου = ΠΡΩΤΟ.ΑΡΧΕΙΟ(φ); ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ ΕΝΟΣΩ (όνομα_αρχείου ≠ ΚΕΝΟ) ΑΝΑΖΗΤΗΣΗ.ΚΕΙΜΕΝΟΥ (“λάθος”); ΑΝΤΙΚΑΤΑΣΤΑΣΗ.ΚΕΙΜΕΝΟΥ (“σωστό”); όνομα_αρχείου = ΕΠΟΜΕΝΟ.ΑΡΧΕΙΟ(φ); ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ Εικόνα 44. Ψευδοκώδικας για εύρεση και αντικατάσταση κειμένου σε όλα τα αρχεία ενός φακέλου. 79 Χρησιμοποιείται μία επαναληπτική δομή While-Wend. Η εντολή Set Doc = Documents.Open(FileName:=strFolder & "\" & strFile) ανοίγει με το Word το πρώτο αρχείο κειμένου που θα βρεθεί στο φάκελο strFolder και ανατίθεται σε αυτό το όνομα Doc Η παραμετροποιήσιμη εντολή Selection.Find.παράμετρος εκτελεί την αναζήτηση και αντικατάσταση του ορισμένου χαρακτήρα ή κειμένου. With Selection.Find .Text = "κείμενο προς αναζήτηση" .Replacement.Text = "κείμενο αντικατάστασης" End With Selection.Find.Execute Replace:=wdReplaceAll Μετά την αντικατάσταση το αρχείο κλείνει και αποθηκεύεται με την εντολή Doc.Close SaveChanges:=True και στη συνέχεια ανοίγει το επόμενο αρχείο στο φάκελο μέχρι να ελεγχθούν όλα. Με τη χρήση χαρακτήρων «μπαλαντέρ» (wildcards) δίνεται η δυνατότητα με μία εντολή αναζήτησης να βρεθούν και να αντικατασταθούν περισσότερες από μία λαθεμένες εκδοχές μίας λέξης. Τα wildcards *(αστερίσκος) και ? (ερωτηματικό) σημαίνουν ένας και πολλοί χαρακτήρες αντίστοιχα. Για παράδειγμα, η αναζήτηση του Oν*επ?νυμο θα ανακαλύψει όλες τις συμβολοσειρές που αρχίζουν με Ον, στη συνέχεια έχουν έναν αδιάφορο αριθμό από χαρακτήρες (*), συνεχίζουν με το επ, μετά υπάρχει ένας χαρακτήρας (?) και τέλος υπάρχει η συμβολοσειρά νυμο. Οπότε, με μία μόνο αναζήτηση θα βρεθεί το «Οναμαιεπωνυμο» που εμφανίζει 4 λάθη ταυτόχρονα. 5.3 Αποτελέσματα της εφαρμογής Dioscoride Χρησιμοποιώντας το πρόγραμμα Dioscoride που υλοποιήθηκε ειδικά για αυτόν το σκοπό, διαβάστηκαν τα 6,797 αρχεία docx που προήλθαν από την OCR (αφαιρέθηκαν τα 250 έγγραφα που ήταν χαμηλής ποιότητας). Η επεξεργασία των αρχείων έγινε σε στάδια, ανάλογα με το έτος τους, ξεκινώντας από το φάκελο του 1995 ως αυτόν του 2010 (εικόνες 45, 46). Εικόνα 45. Dioscoride: Επιλογή του φακέλου που περιέχει τις αναφορές. Εικόνα 46. Το πρόγραμμα σε λειτουργία για το φάκελο των αναφορών του 2010. 80 Τα αρχεία εξόδου του Dioscoride είναι αρχεία κειμένου μορφής CSV, ένα για κάθε έτος (1995-2010). Τα αρχεία αυτά εισήχθησαν πρώτα σε ένα λογιστικό φύλλο για να προετοιμαστούν για την εισαγωγή σε ΒΔ (εικόνα 47). Εικόνα 47. Εισαγωγή των αρχείων CSV σε λογιστικό φύλλο. Τα επώνυμα έχουν κρυφτεί σκόπιμα. Κατά την εισαγωγή των δεδομένων στο λογιστικό φύλλο διαπιστώθηκαν 393 σειρές όμοιες με άλλες, που προέρχονταν από έγγραφα που είχαν σαρωθεί στην αρχική φάση δύο φορές ή βρισκόταν δύο φορές εκτυπωμένα στην αρχική συλλογή των εγγράφων. Αυτές οι διπλοτυπίες διαγράφτηκαν και τελικά το φύλλο περιείχε 6,404 σειρές δεδομένων που αντιστοιχούν σε ισάριθμες αναφορές ιστολογικών εξετάσεων. 81 5.4 Εισαγωγή στη βάση δεδομένων Τα δεδομένα CSV εισήχθησαν σε ένα λογιστικό φύλλο (MS Excel 2010). Από το σύνολο των δεδομένων, προετοιμάστηκαν τέσσερα ξεχωριστά φύλλα, ένα για κάθε πίνακα της ΒΔ. Το φύλλο Patients περιέχει με σειρά τις στήλες Α.Μ., Όνομα, Επώνυμο. Το φύλλο Reports περιέχει τις στήλες Αρ.Πρωτ., Α.Μ., Ημ/νία, Αποτέλεσμα, Ηλικία. Το φύλλο Specimens τις στήλες Κωδικό, Είδος παρασκευάσματος και τέλος το φύλλο Contain τις δύο στήλες Κωδικό παρασκευάσματος και Αρ. Πρωτ.. 5.4.1 Εισαγωγή δεδομένων στον πίνακα Patients Αρχικά μέσα στο περιβάλλον του λογιστικού φύλλου βρέθηκαν τα ελλείποντα Α.Μ. και αντικαταστάθηκαν με αυθαίρετες τιμές της μορφής ΤΧΧΧΧΧΧ (372 περιπτώσεις). Προσοχή δόθηκε ώστε να δοθεί ίδια τιμή Α.Μ στις γραμμές που αναφέρονταν στον ίδιο ασθενή. Είναι προϋπόθεση για την ακεραιότητα των δεδομένων, ο πίνακας Patients να μην περιέχει διπλότυπα (διπλοεγγραφές). Επειδή όμως πολλοί ασθενείς έχουν παραπάνω από μία αναφορές εξετάσεων, στο φύλλο Patients υπάρχουν πλεονάζουσες σειρές (rows) με το ίδιο A.M.. Στο λογιστικό φύλλο η αφαίρεση των διπλοτύπων είναι απλή και γίνεται με το κουμπί Remove Duplicates. Με την εντολή αυτή διαγράφτηκαν άμεσα 2,288 διπλότυπες σειρές (Εικόνα 48). Εικόνα 48. Επιλογή Remove Duplicates στο Excel. Επίσης, παρατηρήθηκε το φαινόμενο της ύπαρξης διπλοτύπων ασθενών με ίδιο A.M. αλλά μικρές διαφορές στο όνομα ή το επώνυμο λόγω ορθογραφικών ατελειών στα αρχικά έγγραφα. Αυτές οι περιπτώσεις εντοπίστηκαν με διαφορετικό τρόπο: Εικόνα 49. Παράδειγμα διπλοτύπων του ίδιου ασθενή με ορθογραφικά λάθη στο Ονοματεπώνυμο. Με την επιλογή Conditional Formatting> Highlight Cell Rules> Duplicate Values (Unique) με επιλεγμένη τη στήλη των A.M., το πρόγραμμα χρωματίζει τις μοναδικές (unique) εγγραφές και αφήνει λευκές τις διπλότυπες. Έτσι εντοπίζονται οπτικά εύκολα οι 82 πλεονάζουσες rows και αφαιρούνται με το Delete. Με αυτόν τον τρόπο διαγράφτηκαν 77 διπλοτυπίες. Στη συνέχεια το φύλλο εξήχθη ως αρχείο CSV με character set UNICODE και τέλος τα δεδομένα κάθε στήλης μπήκαν στα αντίστοιχες στήλες του πίνακα Patients με την εντολή BULK INSERT (εικόνα 50). Συνολικά εισήχθησαν 4,040 ασθενείς. BULK INSERT patients FROM 'e:\Patients.CSV' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n') GO Εικόνα 50. Εισαγωγή του patients.CSV στη βάση 5.4.2 Εισαγωγή δεδομένων στον πίνακα Reports Για τον πίνακα Reports προετοιμάστηκε ένα αρχείο CSV με τις εξής στήλες: Αρ. Πρωτ, Α.Μ. Ημ/νία, Αποτέλεσμα, Όνομα αρχείου, Ηλικία. Βρέθηκαν τρεις περιπτώσεις όπου ο Αρ. Πρωτ. δεν υπήρχε, οπότε ανατέθηκαν αυθαίρετες τιμές της μορφή Π00Χ-00/00/0000 για τη διατήρηση της ακεραιότητας του κλειδιού. Τα δεδομένα εξήχθησαν ως αρχείο CSV (UNICODE) (εικόνα 51) και εισήχθησαν στη βάση με εντολές SQL (εικόνα 52). Εικόνα 51. Τα δεδομένα σε μορφή Comma Delimited Values. BULK INSERT reports FROM 'e:\reports.CSV' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') GO Εικόνα 52. Εισαγωγή του reports.CSV στον αντίστοιχο πίνακα. 83 5.4.3 Εισαγωγή δεδομένων Contains και Specimens Το φύλλο contains πρέπει να περιέχει τις στήλες Report_ID (Αρ.πρωτ της αναφοράς) και Specimen_ID (κωδικός είδους παρασκευάσματος της αναφοράς). Προϋπόθεση για τη δημιουργία αυτής της σχέσης είναι η ανάθεση ενός ID σε κάθε είδος παρασκευάσματος. Χωρίς περαιτέρω επεξεργασία, τα IDs των παρασκευασμάτων θα ήταν όσα και τα reports (6,404). Επειδή όμως τα πιθανά παρασκευάσματα στη ΣΓΠ χειρουργική είναι συγκεκριμένα, και, σίγουρα πολύ λιγότερα από 6,404, έγινε μία προσπάθεια κατηγοριοποίησής τους με την ανάπτυξη ενός classifier σε γλώσσα VBA. Ο classifier διαβάζει ένα είδος παρασκευάσματος και του αναθέτει έναν κωδικό, ξεκινώντας από τον κωδικό «1». Στη συνέχεια αναζητά να βρει τα ίδια παρασκευάσματα με αυτό που μόλις διάβασε και όταν τα βρει, τους αναθέτει τον ίδιο κωδικό. Όταν τελειώσει η αναζήτηση, διαβάζει το επόμενο παρασκεύασμα και συνεχίζει την ίδια διαδικασία. Τελειώνει όταν έχει ανατεθεί ένας κωδικός σε κάθε παρασκεύασμα του συνόλου. Ο ψευδοκώδικας παρουσιάζεται στην εικόνα 53 και ο πλήρης κώδικας βρίσκεται στο παράρτημα. Η μέθοδος αυτή συνάντησε το πρόβλημα της ποικιλομορφίας του τρόπου γραφής ενός παρασκευάσματος. Για παράδειγμα αν ο χειρουργός αφαιρέσει έναν λεμφαδένα από τη δεξιά παρωτιδική χώρα, ο τίτλος του «Είδους Παρασκευάσματος» μπορεί να είναι «Λεμφαδένας παρωτίδας ΔΕ» ή «δεξιός παρωτιδικός λεμφαδένας» (εικόνα 54). Αυτή η διαφορά στη συγγραφή οφείλεται στον εν γένει τρόπο συγγραφής του τίτλου των αναφορών, ο οποίος βασίζεται σε ελεύθερο κείμενο και όχι σε επιλογή από προ-ορισμένες εκφράσεις. Επιπλέον, σε έναν τίτλο μπορεί να περιέχονται περισσότερα του ενός παρασκευάσματα (σύνθετα), με επίσης ποικιλία στον τρόπο γραφής. Για παράδειγμα: «Α) Σπίλος γενειακής χώρας δεξιά Β) Θήλωμα άνω χείλους Γ) Θήλωμα κάτω χείλους». Άλλο πρόβλημα ήταν η παρουσία πλεονάζουσας πληροφορίας (θόρυβος) σε αρκετούς τίτλους (εικόνα 55). Μέρος του θορύβου αφαιρέθηκε χειροκίνητα αλλά όχι πλήρως. Επίσης κάποια σύνθετα παρασκευάσματα χωρίστηκαν σε επί μέρους rows, αλλά επίσης όχι όλες οι περιπτώσεις. Η κατηγοριοποίηση τέτοιων περιπτώσεων απαιτεί πιο πολύπλοκες μεθόδους μηχανικής μάθησης και NLP και αφέθηκαν ως μελλοντική εργασία βελτίωσης του συστήματος. // Simple specimens Classifier // Β,C ΕΙΝΑΙ ΟΙ ΣΤΗΛΕΣ «ΕΙΔΟΣ ΠΑΡΑΣΚΕΥΑΣΜΑΤΟΣ» και «ΚΩΔΙΚΟΣ» ΑΝΤΙΣΤΟΙΧΑ ΓΙΑ x=1 ΕΩΣ ΤΕΛΟΣ_ΣΤΗΛΗΣ_Β ΑΝ (C[x] = EMPTY) ΘΕΣΕ C[x]=i ΓΙΑ y=x ΕΩΣ ΤΕΛΟΣ_ΣΤΗΛΗΣ_Β ΑΝ (C[x]=EMPTY ΚΑΙ Β[y]=B[x]) ΘΕΣΕ C[y]=i ΤΕΛΟΣ ΓΙΑ ΑΥΞΗΣΕ TO i KATA 1 ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΓΙΑ Εικόνα 53. Ψευδοκώδικας του κατηγοριοποιητή 84 Βιοψία από το κάτω χείλος – βιοψία κάτω χείλους – βιοψία χείλους FNA παρωτίδας – Κυτταρολογική FNA παρωτίδας – FNA παρωτ. Βιοψία παρειάς ΔΕ – Βιοψία δεξιάς παρειάς – Βιοψία παρειάς Βασικοκυτταρικό καρκίνωμα μετώπου – Βασικοκυτταρικό (;) μετωπιαίας χώρας Ca έσω κανθού αριστερά – Ca έσω κανθού αριστερού οφθαλμού Ca μετωπιαίας χώρας – Ca μετώπου Ca Υπερώας Άνω Γνάθου – Ca Υπερώας Α) Λεμφαδένας Από Αριστερή Προσωπική Αρτηρία Β) Περιεχόμενο Υπογναθίου Τριγώνου Αριστερά Γ) Βλάβη Παρειάς Αριστερά Δ) Βλεννογόνος Έμπροσθεν Του Προσθίου Κάτω (Αρ) Πρώτου Προγομφίου Εικόνα 54. Το πρόβλημα της ποικιλομορφίας στη γραφή των παρασκευασμάτων. Ένα παρασκεύασμα παρουσιάζει πολλούς διαφορετικούς τίτλους. Ca Έσω Κανθού Αριστερά (Το Ράμμα Αντιστοιχεί Στην Περιοχή Του Έσω Κανθού) Ca Έσω Κανθού Δεξιά (Τα Μικρότερα Ιστοτεμάχια Είναι Τα Περιφερικά Χείλη εκτομής) Ca Κάτω Χείλους - Πιθανή Ακτινική Χειλίτις Ca Κροταφοζυγωματικής Χώρας Αριστερά-Βιοψία Ca Προσώπου (Ράχεος Ρινός) Ca Ράχεως Ρινός [Νάϋλον Ράμμα Αντιστοιχεί Στο Σημείο Της Ταχείας (Έσω κανθού) Και Το Άλλο Ράμμα Μαύρο Αντιστοιχεί Στη Βιοψία-Πλάγιο Τοίχωμα ρινός Δεξιά] Ακρορριζική Αλλοίωση Πιθανότατα Από Τον Πλάγιο Τομέα Της Άνω Γνάθου Εικόνα 55. Ενθόρυβα δεδομένα στους τίτλους παρασκευασμάτων. Ο θόρυβος/πλεονασμός σημειώνεται με κόκκινη γραμματοσειρά Τελικά, με τη χρησιμοποίηση του απλού classifier σχηματίστηκαν 4,343 κατηγορίες, δηλαδή 2,061 λιγότερες από το θεωρητικό μέγιστο (εικόνα 56). Για ελαχιστοποίηση των λαθών της κατηγοριοποίησης, όλοι οι χαρακτήρες της στήλης μετατράπηκαν ομοιόμορφα με PROPERCASE [70], δηλαδή το πρώτο γράμμα μιας συμβολοσειράς καθώς και οποιαδήποτε άλλα γράμματα τα οποία έπονται οποιουδήποτε χαρακτήρα που δεν είναι γράμμα, τίθενται κεφαλαία. Όλα τα υπόλοιπα γράμματα τέθηκαν πεζά. 85 Εικόνα 56. Αυτόματη ανάθεση κωδικών στα είδη παρασκευασμάτων (δείγμα από το φύλλο). Τα είδη με το ίδιο όνομα παίρνουν τον ίδιο κωδικό. Στη συνέχεια δημιουργήθηκαν δύο αρχεία CSV (UNICODE), το ένα (Contains.CSV) με στήλες Αρ.Πρωτ – Κωδικός και το δεύτερο (specimens.CSV) με τις στήλες Κωδικός – Είδος παρασκευάσματος και εισήχθησαν και αυτά στη ΒΔ (εικόνα 57). BULK INSERT specimens FROM 'e:\specimens.CSV' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n') GO BULK INSERT contain FROM 'e:\contain.CSV' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n') GO Εικόνα 57. Εισαγωγή δεδομένων στους πίνακες specimens , contain από τα αντίστοιχα αρχεία. Με τις παρακάτω εντολές SQL εμφανίζονται οι πίνακες της βάσης και το πλήθος των εγγραφών τους (εικόνες 58, 59). SELECT sc.name +'.'+ ta.name ONOMA_PINAKA, SUM(pa.rows) PLITHOS FROM sys.tables ta INNER JOIN sys.partitions pa ON pa.OBJECT_ID = ta.OBJECT_ID INNER JOIN sys.schemas sc ON ta.schema_id = sc.schema_id WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0) GROUP BY sc.name,ta.name ORDER BY SUM(pa.rows) DESC; Εικόνα 58. Εντολές SQL για εμφάνιση των μεγεθών των πινάκων. 86 Εικόνα 59. Τελικά μεγέθη των πινάκων της ΒΔ. 5.4.4 Παράδειγμα εισαγωγής δεδομένων στη βάση με εντολές SQL Στο παρακάτω παράδειγμα φαίνεται η εισαγωγή στη βάση μίας υποθετικής αναφοράς ιστολογικής εξέτασης με στοιχεία: HM/NIA: 10/03/2013 ΑΡ. ΠΡΩΤ.: 9999-10/03/2013 Ονοματεπώνυμο: Papadopoulos Lazaros Ηλικία: 30 Α.Μ.: 1010/13 Είδος Παρασκευάσματος: Σπίλος Προωτιαίας Χώρας Αποτέλεσμα: δεν βρέθηκαν παθολογικές αλλοιώσεις. Εικόνα 60. Υποθετική αναφορά για εισαγωγή στη βάση. insert into patients (patient_ID, surname, name) values ('1010/13', 'Papadopoulos', 'Lazaros') insert into reports (report_ID, patient_ID, date, result, filename, age) values ('9999-10/03/13', '1010/13', '10/03/2013', 'δεν βρέθηκαν παθολογικές αλλοιώσεις.', '','30') insert into contain (report_ID, specimen_ID) values('9999-10/03/13', (SELECT specimen_ID FROM specimens WHERE specimens.description=' Σπίλος Προωτιαίας Χώρας ') ) GO Εικόνα 61. Εντολές SQL για εισαγωγή στη βάση. 87 5.5 Υποβολή ερωτημάτων σε Transact-SQL Σε αυτό το κεφάλαιο παρουσιάζονται ορισμένες ενδεικτικές περιπτώσεις αναζητήσεων μέσα στη βάση OralMaxFac χρησιμοποιώντας τη γλώσσα Transact-SQL. Περίπτωση 1 Έστω ότι μας ενδιαφέρει να εμφανίσουμε μόνο τις ηλικίες εκείνες στις οποίες το είδος του παρασκευάσματος ήταν επιθηλίωμα στον έσω κανθό αριστερά ή δεξιά. Οι εντολές είναι: SELECT reports.age, specimens.description, specimens.specimen_ID FROM reports, contain, specimens WHERE reports.report_id=contain.report_id and specimens.specimen_ID=contain.specimen_ID and (specimens.description='Επιθηλίωμα Έσω Κανθού' or specimens.description='Επιθηλίωμα Έσω Κανθού Δεξιά' or specimens.description='Επιθηλίωμα Έσω Κανθού Αριστερά'); Εικόνα 62. Αναζήτηση των ηλικιών στις οποίες το είδος παρασκευάσματος ήταν "Επιθηλίωμα έσω κανθού" Εικόνα 63. Αποτέλεσμα. Ηλικία, Είδος παρασκευάσματος, ID παρασκευάσματος Αν θέλαμε να εμφανίσουμε και τον αριθμό πρωτοκόλλου της κάθε εγγραφής, θα προσθέταμε την παράμετρο reports.report_ID στην εντολή SELECT. 88 Περίπτωση 2 Θέλουμε να βρούμε τα είδη παρασκευασμάτων που σχετιζόταν με την παρωτίδα και αφορούσαν σε άτομα ηλικίας μεταξύ 20 και 30 ετών. Τα αποτελέσματα θα δοθούν με αύξουσα τιμή ηλικίας. SELECT reports.age, specimens.description FROM contain inner join reports on contain.report_ID=reports.report_ID inner join specimens on specimens.specimen_ID=contain.specimen_ID WHERE (reports.age between 20 and 30) and specimens.description like '%παρωτ%' ORDER BY reports.age; Εικόνα 64. Το ερώτημα SQL με χρήση Inner Join Εικόνα 65. Βρέθηκαν 8 εγγραφές με τα απαιτούμενα χαρακτηριστικά. Περίπτωση 3 Θέλουμε να βρούμε τις αναφορές που στο αποτέλεσμα της βιοψίας βρέθηκε επιθηλίωμα Malherbe. Επειδή το αποτέλεσμα της εξέτασης (reports.result) είναι κείμενο, μπορούμε να πραγματοποιήσουμε full text search με τις εντολές CONTAINS και FREETEXT. Πρώτα πρέπει να δημιουργηθεί ένα fulltext index για τη στήλη results. Use OralMaxFac; go CREATE UNIQUE INDEX result_ID ON reports(report_ID); CREATE FULLTEXT INDEX ON reports(result) KEY INDEX result_ID; go SELECT reports.report_ID, reports.result FROM reports where CONTAINS(result, 'malherbe'); Εικόνα 66. Δημιουργία full-text index και αναζήτηση CONTAINS. 89 Εικόνα 67. Αποτέλεσμα αναζήτησης Malherbe. Περίπτωση 4 Αναζητούμε τα είδη παρασκευάσματος για τα οποία η ιστολογική εξέταση έδειξε μελάνωμα στις αναφορές στις οποίες το άτομο είναι μικρότερο από 40 ετών. SELECT specimens.description FROM contain inner join specimens on specimens.specimen_ID=contain.specimen_ID inner join reports on contain.report_ID=reports.report_ID where FREETEXT(result, 'μελάνωμα') and reports.age<40; Εικόνα 68. Αναζήτηση με χρήση FREETEXT Εικόνα 69. Αποτελέσματα: Βρέθηκαν πέντε περιστατικά μελανώματος σε άτομα ηλικίας<40. Περίπτωση 5 Θέλουμε να βρούμε το πλήθος των ατόμων που εμφάνισαν βασικοκυτταρικό καρκίνωμα στη ρινοπαρειακή περιοχή. Επίσης θέλουμε τη μέση ηλικία αυτών τον ατόμων. SELECT avg(reports.age) as 'Μέση Ηλικία', count(reports.age) as 'Πλήθος' FROM contain inner join specimens on specimens.specimen_ID=contain.specimen_ID inner join reports on contain.report_ID=reports.report_ID where FREETEXT(result, 'βασικοκυτταρικό') and specimens.description like '%ρινοπαρεια%'; Εικόνα 70. Αναζήτηση με χρήση AVG, COUNT και Inner Join. 90 Εικόνα 71. Πενήντα άτομα εμφάνισαν το συγκεκριμένο τύπο καρκίνου και η μέση ηλικία τους ήταν 70 έτη. 91 6. ΣΥΖΗΤΗΣΗ - ΣΥΜΠΕΡΑΣΜΑΤΑ 93 6.1 Σημασία της έρευνας Στην παρούσα εργασία, 7,047 σαρωμένες αναφορές ιστολογικών εξετάσεων επεξεργάστηκαν με λογισμικό OCR και στη συνέχεια προσδιορίστηκαν οι περιοχές των εγγράφων που περιείχαν πολύτιμες πληροφορίες. Τα χαρακτηριστικά της κάθε περιοχής περιγράφτηκαν με μονοσήμαντο τρόπο ως patterns. Το περιβάλλον του Visual Studio 2010 παρέχει ένα εύχρηστο περιβάλλον ανάπτυξης εφαρμογών. Συνδυάζοντας τις δυνατότητες διασύνδεσής του με το Office με τις θεμελιώδεις αρχές της αναζήτησης patterns μέσα σε κείμενο, αναπτύχθηκε το πρόγραμμα Dioscoride. To Dioscoride αναζητά και εξάγει τις επιθυμητές πληροφορίες από κάθε έγγραφο με γρήγορο και αυτοματοποιημένο τρόπο ανακαλύπτοντας τα συγκεκριμένα patterns εκμεταλλευόμενο τα πλεονεκτήματα του αλγορίθμου του Horspool. Με τον τρόπο αυτό δημιουργήθηκε ένα αρχείο txt με τις πληροφορίες μορφοποιημένες ως comma separated values. Στη συνέχεια το αρχείο αυτό χωρίστηκε σε επιμέρους στήλες δεδομένων οι οποίες τελικά εισήχθησαν σε μία ΒΔ σχεδιασμένη ειδικά για την περίπτωση αυτή. Χρησιμοποιώντας τη γλώσσα Transact SQL μπορούν να τεθούν ερωτήματα στη ΒΔ για την αναζήτηση περιστατικών με κοινά χαρακτηριστικά ή την ανακάλυψη πολύπλοκων συσχετίσεων. Είναι γνωστό ότι η οπτική αναγνώριση χαρακτήρων είναι μια τεχνική που δεν έχει τελειοποιηθεί ακόμη και μπορεί να παράγει λάθη. Παρόλα αυτά, μόνο 250 έγγραφα (ποσοστό 0,035%) δεν ήταν δυνατόν να μετατραπούν σε αναγνώσιμο κείμενο. Τα υπόλοιπα σαρωμένα αρχεία αναγνωρίστηκαν σε βαθμό που επέτρεψε την περαιτέρω επεξεργασία τους, χωρίς όμως να λείπουν κάποια σφάλματα. Τα συνηθέστερα λάθη στην OCR αφορούσαν σε συγκεκριμένους χαρακτήρες ή/και λέξεις. Αυτά ανακαλύφθηκαν χειροκίνητα και καταγράφτηκαν έτσι ώστε να καταστεί δυνατή η μοντελοποίησή τους. Στη συνέχεια με τη χρήση εντολών macros τα σφάλματα αυτά επιδιορθώθηκαν μαζικά. Πεποίθηση του συγγραφέα είναι ότι οι μέθοδοι που περιγράφτηκαν στην παρούσα εργασία μπορούν να εφαρμοστούν και σε παρόμοιες περιπτώσεις κλινικών στις οποίες υπάρχει ανεκμετάλλευτη συσσωρευμένη γνώση με τη μορφή εκτυπωμένων αναφορών. Από την ηλεκτρονική εκμετάλλευση αυτών των πληροφοριών θα προκύψει το μέγιστο όφελος σε ερευνητικό και εκπαιδευτικό επίπεδο. 6.2 Περιορισμοί και μελλοντικές επεκτάσεις Το σχεσιακό σχήμα της ΒΔ περιέχει τέσσερις πίνακες και περιγράφει με πλήρη τρόπο τις συσχετίσεις μεταξύ των πεδίων που συνθέτουν μία ιστολογική αναφορά. Η ΒΔ δίνει τη δυνατότητα πραγματοποίησης σύνθετων αναζητήσεων μέσα στα δεδομένα χρησιμοποιώντας ερωτήματα SQL και επιτρέπει τη δημιουργία ρόλων χρηστών για τον έλεγχο της πρόσβασης στα ιατρικά δεδομένα. Επιπλέον, ανωνυμοποιώντας πλήρως τα δεδομένα μέσω της απόκρυψης ή αφαίρεσης του ονοματεπώνυμου κάθε ασθενή, μπορεί να δημιουργηθεί μια web-based βάση ιστολογικών αναφορών ανοιχτής πρόσβασης. Μια τέτοια βάση θα έχει μεγάλη εκπαιδευτική χρησιμότητα καθώς θα είναι διαθέσιμη σε φοιτητές ιατρικής, σε ειδικευόμενους παθολογοανατόμους και σε όποιον άλλο ενδιαφέρεται να πραγματοποιήσει σύνθετες αναζητήσεις και στατιστικές αναλύσεις για εξαγωγή ποικίλλων συμπερασμάτων από τα ιστολογικά δεδομένα. Ενδεικτικά αναφέρεται ότι με ένα απλό ερώτημα SQL ανακαλύφθηκε ότι στην περίοδο 1995-2010 υπήρξαν πέντε περιστατικά μελανώματος στη ΣΓΠ περιοχή, σε ηλικίες κάτω των 40 ετών. Η εξαγωγή αυτού του συμπεράσματος θα απαιτούσε μια χρονοβόρα και κοπιαστική εργασία αν η αναζήτηση γινόταν χειροκίνητα. Όμως με την κατάλληλη σύνταξη ερωτημάτων SQL μπορούμε να έχουμε σε μηδενικό χρόνο απαντήσεις σε σύνθετα ερωτήματα. Η κατηγοριοποίηση των ειδών παρασκευάσματος σε διακριτές κατηγορίες θα διευκολύνει περαιτέρω τη σύνταξη των ερωτημάτων. Η εργασία αυτή θα απαιτήσει συνδυασμό μιας αυτοματοποιημένης μεθόδου (μέσω προγραμματισμού) και χειροκίνητης εργασίας καθώς το «είδος παρασκευάσματος» συχνά περιέχει πλεονάζουσα πληροφορία η οποία πρέπει να διαχωριστεί και να αγνοηθεί. Άλλες φορές εμφανίζεται ποικιλομορφία στον τρόπο γραφής ενός παρασκευάσματος η οποία πρέπει επίσης να ληφθεί υπόψη καταγράφοντας όλες τις πιθανές περιπτώσεις. Η τελειοποίηση της ΒΔ θα προκύψει μετά την κατηγοριοποίηση και του «Αποτελέσματος». Το πεδίο αυτό περιέχει τη διάγνωση και είναι γραμμένο με ελεύθερη γλώσσα. Στην παρούσα φάση η αναζήτηση μέσα στο «αποτέλεσμα» είναι εφικτή με τη χρήση των εντολών CONTAINS και FREETEXT της SQL, καθώς το πεδίο αυτό θεωρείται ως μια περιοχή free text, δηλαδή κειμένου χωρίς κάποια συγκεκριμένη δομή. Για παράδειγμα, σε μία αναζήτηση επί του συνόλου των αναφορών βρέθηκαν τέσσερις περιπτώσεις εμφάνισης του επιθηλιώματος Malherbe. Όμως, με αυτή τη μέθοδο δεν είναι δυνατόν να διαχωριστούν οι περιπτώσεις αρνητικής απάντησης του παθολογοανατόμου. Για παράδειγμα, υπάρχει η πιθανότητα σε κάποια από αυτές τις αναφορές να αναγράφεται ότι «Η εξέταση ΔΕΝ έδειξε επιθηλίωμα Malherbe...» όμως και αυτή η αναφορά θα περιλαμβάνεται στα αποτελέσματα της αναζήτησης. Οι εντολές SQL δεν παρέχουν την ασφαλή δυνατότητα διαχωρισμού τέτοιων περιπτώσεων. Για αυτό απαιτείται οπτικός έλεγχος των αποτελεσμάτων για επιβεβαίωση. Παρομοίως με την εργασία των Butt και συν. (2012) [13], για την επίλυση του προβλήματος αυτού απαιτείται η ανάπτυξη κάποιας μεθόδου NLP ή μηχανικής μάθησης ώστε να υπάρξει αυτόματη κατηγοριοποίηση του αποτελέσματος κάθε αναφοράς. Για αυτή τη διαδικασία σίγουρα θα απαιτηθεί και χειρονακτική εργασία για τον προσδιορισμό των κατηγοριών, όπως στην εργασία των Patrick και Scolyer (2008) [9]. Ενδεικτικά, μερικές από τις κατηγορίες είναι: 95 σπίλος ακτινική κερατίαση σμηγματορροϊκή κερατίαση ακανθοκυτταρικό καρκίνωμα βασικοκυτταρικό καρκίνωμα ... Χωρίς κακοήθεια Στη συνέχεια μπορεί το αποτέλεσμα να αντιστοιχιστεί με έναν κωδικό ICD. Επίσης μπορούν να δημιουργηθούν καινούριες στήλες στη ΒΔ που θα περιέχουν επιπλέον πληροφορίες για εξειδικευμένες ιστολογικές παραμέτρους, όπως: θετικότητα πρωτεϊνών p63, S-100 κλπ. διήθηση χορίου παρουσία υπερκεράτωσης, παρακεράτωσης κλπ. Η εφαρμογή τεχνικών data mining στα δεδομένα της βάσης μπορεί να αποκαλύψει τυχόν συσχετιστικούς κανόνες μεταξύ των πεδίων Ηλικία, Είδος Παρασκευάσματος και Αποτέλεσμα. Ο MS SQL Server 2012 παρέχει προβλεπτικά εργαλεία για εξόρυξη δεδομένων μέσω των Analysis Services [72]. Τα μοντέλα κάνουν χρήση δέντρων απόφασης (decision trees) και Naive Bayes. Οι δυνατότητες βελτιστοποίησης που περιγράφτηκαν παραπάνω σε συνδυασμό με τη δημιουργία μιας ανοιχτής web based βάσης θα αποτελέσει μία σημαντική συλλογή γνώσης προσβάσιμη σε κάθε ενδιαφερόμενο. Στη συνέχεια μπορεί να δοθεί σε συγκεκριμένους χρήστες (χειρουργούς ή παθολογοανατόμους) το προνόμιο της προσθήκης νέων περιστατικών για τον εμπλουτισμό των δεδομένων και την επικαιροποίηση της βάσης. 6.3 Συμπεράσματα Στόχος της διπλωματικής εργασίας ήταν η επεξεργασία εκτυπωμένων ιστολογικών αναφορών και η εισαγωγή τους σε μία βάση δεδομένων. Με χρήση τεχνικών OCR και προγραμματισμού, η πλειονότητα των σαρωμένων εγγράφων (>99.9%) εισήχθησαν επιτυχώς σε κατάλληλα σχεδιασμένη βάση δεδομένων. Με τα κατάλληλα ερωτήματα SQL πραγματοποιούνται απλές και σύνθετες αναζητήσεις μέσα στα δεδομένα. Η web based μετατροπή της βάσης πιστεύεται ότι θα έχει εκπαιδευτικό ενδιαφέρον. Επιπλέον παρέχεται το υπόστρωμα για ανακάλυψη γνώσης μέσω της εφαρμογής τεχνικών εξόρυξης δεδομένων και στατιστικών αναλύσεων. 96 ΑΝΑΦΟΡΕΣ 1. Biondich PG, Overhage JM, Dexter PR, Downs SM, Lemmon L, McDonald CJ. A modern optical character recognition system in a real world clinical setting: some accuracy and feasibility observations. Proc AMIA Symp 2002:56-60. PMID: 12463786 2. Schmeck HM Jr. Computers Bound for Medical Role; Symposium Shows Range of Research the 'Brains' Could Be Used For. The New York Times. October 2, 1960. 3. Brody JE. From Psychiatric Aid to Space, It's a Power Tool for Sciences; Computer Is being Used to Help Solve Staggering Amount of Problems, Yet It Is Still Considered in Its Infancy. The New York Times January 9, 1967. 4. Old Computer Magazine Ads. Available at: http://www.dvq.com/oldcomp/oldads.htm 5. Βλαχάβας Ι, Κεφαλάς Π, Βασιλειάδης Ν, Κόκκορας Φ, Σακελλαρίου Η. Τεχνητή Νοημοσύνη. Γ Έκδοση. Γκιούρδας, 2006. 6. Cortes C, Vapnik V. Support-vector Network. Machine Learning 1995;20:273–297. 7. Rabiner, LR.; Juang, BH. Fundamentals of Speech Recognition. Englewood Cliffs, NJ:Prentice-Hall, 1993. 8. Misra D, Chen S, Thoma GR. A System for Automated Extraction of Metadata from Scanned Documents using Layout Recognition and String Pattern Search Models. Archiving 2009;1509STP:107-112. PMID: 21179386. 9. Patrick J, Scolyer R. Information Extraction from Narrative Pathology Reports on Melanoma. Quality Use of Pathology Program. Project Report, 2008. 10. Zuccon G, Nguyen AN, Bergheim A, Wickman S, Grayson N. The impact of OCR accuracy on automated cancer classification of pathology reports. Stud Health Technol Inform 2012;178:250-6. 11. Zuccon G, Nguyen AN, Bergheim A, Grayson N. Cancer reporting from OCR free-text pathology reports. COSA 2012, Brisbane, 2-3 November 2012:327-8. 12. Nguyen AN, Lawley MJ, Hansen DP, Bowman RV, Clarke BE, Duhig EE, Colquist S. Symbolic rule-based classification of lung cancer stages from free-text pathology reports. J Am Med Inform Assoc 2010;17(4):440-5. PMID: 20595312 13. Butt L, Zuccon G, Nguyen A, Bergheim A, Grayson N. Automatic Classification of Cancer Notifiable Death Certificates. Proceedings of the Second Australian Workshop on Artificial Intelligence in Health (AIH 2012) Sydney, Australia, December 4, 2012:65-76. 14. Spyns P. Natural language processing in medicine: an overview. Methods Inf Med 1996;35(4–5):285-301. PMID: 9019092 98 15. Imler TD, Morea J, Kahi C, Imperiale TF. Natural Language Processing Accurately Categorizes Findings From Colonoscopy and Pathology Reports. Clin Gastroenterol Hepatol 2013. Published Online 14 January 2013. PMID: 23313839 16. Thomas AA, Zheng C, Jung H, Chang A, Kim B, Gelfond J, Slezak J, Porter K, Jacobsen SJ, Chien GW. Extracting data from electronic medical records: validation of a natural language processing program to assess prostate biopsy results. World J Urol 2013 Feb 17. PMID: 23417341. 17. Mitchell KJ, Crowley RS, Gupta D, Gilbertson J. A Knowledge-based Approach to Information Extraction from Surgical Pathology Reports. AMIA Annu Symp Proc 2003:937. PMID: 14728442 18. Unified Medical Language System (UMLS). U.S. National Library of Medicine Website, National Institutes of Health. Available at: http://www.nlm.nih.gov/research/umls/quickstart.html 19. Roccia F, Caldarelli C, Spada MC, Brucoli M, Beatrice F, Ruffino S, Benech A, Ramieri G, Berrone S. Development of a Regional Database for Studying Epidemiology of Maxillofacial Trauma. J Craniofac Surg 2010;21(4):1045-50. PMID: 20613554 20. Zhaohui S, Shuxia Z, Xinghua F, et al. The design and implementation of Chinese maxillofacial trauma registry, analysis and Injury Severity Score system. J Trauma 2008;64(4):1024-33. PMID: 18404070 21. Definitions of Recognized Dental Specialties. American Dental Association. Available at: http://www.ada.org/495.aspx 22. Sub-specialist areas. The British Association of Oral and Maxillofacial Surgeons. Available at: http://www.baoms.org.uk/page.aspx?id=297 23. Δημητριάδης Σ, Πομπόρτσης Α, Τριανταφύλλου Ε. Τεχνολογία Πολυμέσων, Θεωρία και Πράξη. Θεσσαλονίκη: Τζιόλα, 2004:190-9. 24. Pranob KC, Harish V, Swathi M, Deepthi CH. A Review on the Various Techniques used for Optical Character Recognition. IJERA 2012;2(1):659-62. 25. Eikvil L. OCR-Optical Character Recognition. Norwegian Computer Center: Oslo, 1993:128. Available at: www.nr.no/~eikvil/OCR.pdf 26. Gonzalez RC, Woods RE. Digital image processing. Prentice Hall, 2008. 27. Picton P. Hough transform references. IJPRAI 1987;1:413-25. 28. Pichler O, Teuner A, Hosticka B. A comparison of texture feature-extraction using adaptive gabor filtering, pyramidal and tree-structured wavelet transforms. Pattern Recognition 1996;29:733-42. 29. Ha T, Bunke H. Handwritten numeral recognition by perturbation method. In Proceedings Fourth Int. Workshop on Frontiers of Handwriting Recognition 1994;13:97106. 30. Zramdini A, Ingold R. Optical font recognition using typographical features. IEEE TPAMI 1998;2(8):877-82. 31. Russel S, Norvig P. Artificial Intelligence-A modern approach. Pearson Education, 2003. 32. Pallavi, Saxena. Optical Character Recognition. VSRD-IJCSIT 2012;2(4):305-15. 33. Nagy G, Nartker TA, Rice SV. Optical Character Recognition: An illustrated guide to the frontier. In Proceedings of Document Recognition and Retrieval VII, vol.3967, pp. 58-69, San Jose, SPIE, 2000 (invited). 99 34. Basu M, Bunke H, Del Bimbo A. Guest editor's introduction to the special section on synctactic and structural pattern recognition. IEEE TPAMI 2005;27(7):1009. 35. Duda R, Hart P. Pattern classification and scene analysis. John Wisley & Sons, 1973. 36. Rabiner L, Juang BH. Fundamentals of Speech Recognition. Prentice Hall, 1993. 37. Μανωλόπουλος Ι, Παπαδόπουλος Α. Συστήματα Βάσεων Δεδομένων-Θεωρία και πρακτική εφαρμογή. Εκδόσεις Νέων Τεχνολογιών, 2006. 38. Ramakrishnan R, Gehrke J. Database Management Systems, Greek Translation, Τζιόλας, 2002. 39. Pangalos GJ. Medical database security policies. Methods Inf Med. 1993 Nov;32(5):34956. 40. Πάγκαλος Γ, Μαυρίδης Ι. Ασφάλεια πληροφοριακών συστημάτων και δικτύων. Ανίκουλα, 2002. 41. Sandhu, R Coyne EJ, Feinstein HL, Youman CE. Role-Based Access Control Models. IEEE Computer (IEEE Press) 1996;29 (2): 38–47. 42. Levitin A. Introduction to the design and analysis of algorithms. 3rd edition. Pearson Education, 2012:259-67. 43. Horspool NR. Practical Fast Searching in Strings. Software-Practice and Experience 1980;10: 501-6. 44. Boyer R, Moore S. A fast string searching algorithm. Communications of the ACM 1977;12(10):762-72. 45. Tesseract OCR. Project Home. Available at: http://code.google.com/p/tesseract-ocr/ 46. Tesseract OCR. Downloads. Available at: http://code.google.com/p/tesseractOCR/downloads/list 47. http://code.google.com/p/tesseract-OCR/wiki/TrainingTesseract3 48. Smith R. An Overview of the Tesseract OCR Engine. Google Inc. IEEE, 2007. 0-7695-28228/07 Available at: http://tesseractOCR.googlecode.com/svn/trunk/doc/tesseracticdar2007.pdf 49. VIETOCR website. Available at: http://vietOCR.sourceforge.net/ 50. VIETOCR Training. jTessBoxEditor. Available at: http://vietOCR.sourceforge.net/training.html 51. ABBY Fine Reader Case Studies. Available at: http://www.abbyy.com/CaseStudies/ http://www.abbyy.com/Default.aspx?DN=a9d88561-ede3-4c1e-974f-ffa0dce5bd78 52. 51. ABBY Fine Reader Image Processing. Available at: http://www.abbyy.com/OCR_sdk_windows/OCR_stages/image_processing/) 53. Nuance Company overview. Available at: http://www.nuance.com/company/companyoverview/fast-facts/index.htm 54. Nuance OmniPage. Available at: http://www.nuance.com/for-business/byproduct/omnipage/standard/index.htm 55. Getting Started with Visual Studio. MSDN. Available at: http://msdn.microsoft.com/enus/library/ms165079(v=vs.100).aspx 56. .NET Framework Conceptual Overview. MSDN. Available at: http://msdn.microsoft.com/en-us/library/zw4w595w(v=vs.100).aspx 57. Moore A. Visual Studio 2010 All-in-One For Dummies. Indianapolis: Wiley, 2010:82. 100 58. .NET Framework Class Library. MSDN. Available at: http://msdn.microsoft.com/enus/library/gg145045(v=vs.100).aspx 59. Component Object Model (COM). Windows Dev Center. Available at: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680573(v=vs.85).aspx 60. Office Primary Interop Assemblies. MSDN. Available at: http://msdn.microsoft.com/enus/library/15s06t57(v=vs.100).aspx 61. Randolph N, Gardner D, Minutillo M, Anderson C. Professional Visual Studio 2010. Indianapolis: Wiley, 2010:105. 62. SQL Server overview. Microsoft website. Available at: http://www.microsoft.com/enus/sqlserver/product-info/overview-capabilities.aspx#tab3 63. Pedanius Dioscoride. Wikipédia, l'encyclopédie libre. Available at: http://fr.wikipedia.org/wiki/Dioscoride 64. DBA and Developer Guide to What's New in MySQL 5.6. MySQL website. Available at: http://www.mysql.com/why-mysql/white-papers/whats-new-mysql-5-6/ 65. MySQL vs. SQL Server 2012. Microsoft website. Available at: http://www.microsoft.com/en-us/sqlserver/product-info/competitorcompare.aspx#MySQL 66. Schumacher R. Why Move to MySQL from Microsoft SQL Server? MySQL website. Available at: http://dev.mysql.com/techresources/articles/move_from_microsoft_SQL_Server.html 67. Bassil Y. A Comparative Study on the Performance of the Top DBMS Systems. JCSCR 1(1);2012:20-31 . 68. Features Supported by the Editions of SQL Server 2012. MSDN. Available at: http://msdn.microsoft.com/en-us/library/cc645993.aspx 69. MySQL 5.6 Reference Manual - Oracle Documentation. Available at: docs.oracle.com/cd/E17952_01/refman-5.6-en/refman-5.6-en.pdf 70. How to change the case of text in Excel. Microsoft Support. Available at: http://support.microsoft.com/kb/263580/en-us 71. Database-Level Roles. MSDN. Available at: http://msdn.microsoft.com/enus/library/ms189121.aspx 72. Basic Data Mining Tutorial. SQL Server 2012. MSDN. Available at: http://msdn.microsoft.com/en-us/library/ms167167.aspx 101 ΠΑΡΑΡΤΗΜΑΤΑ Παράρτημα Ι. Κώδικας Dioscoride REM REM REM REM Imports Imports Imports Imports ------------------------------------------------------------------------ Lazaros Papadopoulos © 2013 - GNU General Public License ------------ DIscoverer Of hiStologiC repORts and fIelD Extractor (Dioscoride) -----------------------------------------------------------------------System System.IO System.Text System.Collections.Generic Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim wordapp As New Microsoft.Office.Interop.Word.Application Dim Nothingobj As Object = System.Reflection.Missing.Value Dim char_index As Integer = 0 Dim i As Integer = 0 Dim temp As Integer = 0 Dim arxi As Integer = 0 Dim curr_file As Integer = 0 Dim curr_pos As Integer = 0 Dim copy_tries As Integer = 0 Dim name_index As Integer = 0 Dim search_index As Integer = 0, data As String = "" Dim ar_prot(14) As Char, apotelesma() As Char Dim full_path As String, hmnia(9) As Char, hmnia2(7) As Char, onoma(12) As Char, a_m(6) As Char, eponymo(30) As Char Dim mikro_onoma(20) As Char, hlikia(5) As Char, hlikia_digit(2) As Char, eidos_par(20) As Char Dim spec_type() As Char, edeixe(5) As Char Dim onoma_arxeiou As String REM REM open folder dialog and select folder FolderBrowserDialog1.ShowDialog() Dim selected_path As String = FolderBrowserDialog1.SelectedPath REM REM count files Dim VARFileCount As Integer = IO.Directory.GetFiles(selected_path, "*.docx").Length If VARFileCount < 1 Then MsgBox("No files found!", , "Attention") Exit Sub End If TextBox1.Text = VARFileCount ToolStripStatusLabel1.Text = "Please wait..." REM REM create a file for the output Dim outfile As New StreamWriter(selected_path + "\EXODOS.CSV", append:=False) 'overwrites REM REM begin opening the documents one by one For Each full_path In IO.Directory.GetFiles(selected_path, "*.docx") On Error GoTo lathos onoma_arxeiou = Path.GetFileName(full_path) Dim doc As New Microsoft.Office.Interop.Word.Document curr_file = curr_file + 1 TextBox2.Text = curr_file ToolStripProgressBar1.Value = curr_file / VARFileCount * 100 doc = wordapp.Documents.Open(full_path, Nothingobj, Nothingobj, Nothingobj, 104 Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj, Nothingobj) doc.Activate() data = "" REM REM copy the whole text to data string copy_tries = 0 While (data = "" And copy_tries <= 2) 'try two times to copy doc.ActiveWindow.Selection.WholeStory() doc.ActiveWindow.Selection.Copy() data = Clipboard.GetDataObject.GetData(DataFormats.UnicodeText).ToString Clipboard.Clear() copy_tries = copy_tries + 1 End While REM REM close the document doc.Close() doc = Nothing REM REM write the document's filename in the output file outfile.Write(onoma_arxeiou + ",") REM REM search for date type-1 pattern "XX/XX/XXXX" (report's date. X is digit) If RadioButton1.Checked = True Then curr_pos = -10 REM REM If the most right char is not digit, move the pattern 10 chars to the right and put them in the array hmnia. While (Char.IsDigit(hmnia(9)) = False) char_index = 0 curr_pos = curr_pos + 10 REM put the next 10 chars in the array For search_index = curr_pos To (curr_pos + 9) hmnia(char_index) = data(search_index) char_index = char_index + 1 Next End While REM REM check the rest 9 chars and continue moving by 1 char to the right until the pattern is found While ((Char.IsDigit(hmnia(0)) = False) Or (Char.IsDigit(hmnia(1)) = False) Or (hmnia(2) <> "/") Or (Char.IsDigit(hmnia(3)) = False) Or (hmnia(5) <> "/") Or (Char.IsDigit(hmnia(6)) = False) Or (Char.IsDigit(hmnia(7)) = False) Or (Char.IsDigit(hmnia(8)) = False)) char_index = 0 For search_index = curr_pos To (curr_pos + 9) hmnia(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 10) = curr_pos) Then 'reached the end of data string and found no date pattern hmnia = "NotFound" Exit While End If End While outfile.Write(hmnia + ",") End If REM REM search for date type-2 pattern "XX/XX/XX" (report's date. X is digit) If RadioButton2.Checked = True Then curr_pos = -8 REM 105 REM If the most right char is not digit, move the pattern 8 chars to the right and put them in the array hmnia. While (Char.IsDigit(hmnia2(7)) = False) char_index = 0 curr_pos = curr_pos + 8 REM put the next 8 chars in the array For search_index = curr_pos To (curr_pos + 7) hmnia2(char_index) = data(search_index) char_index = char_index + 1 Next End While REM REM check the rest 7 chars and continue moving by 1 char to the right until the pattern is found While ((Char.IsDigit(hmnia2(0)) = False) Or (Char.IsDigit(hmnia2(1)) = False) Or (hmnia2(2) <> "/") Or (Char.IsDigit(hmnia2(3)) = False) Or (hmnia2(5) <> "/") Or (Char.IsDigit(hmnia2(6)) = False)) char_index = 0 For search_index = curr_pos To (curr_pos + 7) hmnia2(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 8) = curr_pos) Then 'reached the end of data string and found no date pattern hmnia2 = "NotFound" Exit While End If End While outfile.Write(hmnia2 + ",") End If REM REM search for type-1 protocol-number pattern "XXXXX-XX/XX/XX". If (hmnia <> "NotFound" And hmnia2 <> "NotFound") Then 'if date pattern was found curr_pos = curr_pos + 6 'continue checking from current position +6 Else curr_pos = 0 'if date not found, start from the beggining End If temp = curr_pos 'save current position to temp. will be used to re-search for protocol-number type-2 pattern REM REM start searching for protocol pattern type 1 While ((Char.IsDigit(ar_prot(0)) = False) Or (Char.IsDigit(ar_prot(1)) = False) Or (Char.IsDigit(ar_prot(2)) = False) Or (Char.IsDigit(ar_prot(3)) = False) Or (Char.IsDigit(ar_prot(4)) = False) Or (Char.IsDigit(ar_prot(6)) = False) Or (Char.IsDigit(ar_prot(7)) = False) Or (ar_prot(8) <> "/") Or (Char.IsDigit(ar_prot(9)) = False) Or (Char.IsDigit(ar_prot(10)) = False) Or (ar_prot(11) <> "/") Or (Char.IsDigit(ar_prot(12)) = False) Or (Char.IsDigit(ar_prot(13)) = False)) char_index = 0 For search_index = curr_pos To (curr_pos + 13) ar_prot(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 14) = curr_pos) Then 'reached the end of data but found no pattern ar_prot = "NotFound" Exit While End If ar_prot(14) = "" End While 106 REM REM if type 1 pattern no found, search for protocol-number type-2 pattern "XXXXXX/XX/XXXX" If ar_prot = "NotFound" Then curr_pos = temp ar_prot = "xxxxxxxxxxxxxxx" While ((Char.IsDigit(ar_prot(0)) = False) Or (Char.IsDigit(ar_prot(1)) = False) Or (Char.IsDigit(ar_prot(2)) = False) Or (Char.IsDigit(ar_prot(3)) = False) Or (Char.IsDigit(ar_prot(5)) = False) Or (Char.IsDigit(ar_prot(6)) = False) Or (ar_prot(7) <> "/") Or (Char.IsDigit(ar_prot(8)) = False) Or (Char.IsDigit(ar_prot(9)) = False) Or (ar_prot(10) <> "/") Or (Char.IsDigit(ar_prot(11)) = False) Or (Char.IsDigit(ar_prot(12)) = False) Or (Char.IsDigit(ar_prot(13)) = False) Or (Char.IsDigit(ar_prot(14)) = False)) char_index = 0 For search_index = curr_pos To (curr_pos + 14) ar_prot(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 15) = curr_pos) Then 'reached the end of data but found no pattern ar_prot = "NotFound" Exit While End If End While End If outfile.Write(ar_prot + ",") REM REM search for name-surname pattern: 'Ονοματεπώνυμο' curr_pos = 0 While (onoma <> "Ονοματεπώνυμο") curr_pos = curr_pos + 1 char_index = 0 For search_index = curr_pos To (curr_pos + 12) onoma(char_index) = data(search_index) char_index = char_index + 1 Next If ((data.Length - 13) <= curr_pos) Then 'reached the end of data but found no pattern onoma = "NotFound" Exit While End If End While REM REM move current position to the end of the pattern and find the first Letter character. This is where the surname starts. If (onoma <> "NotFound") Then 'if pattern "Ονοματεπώνυμο" was found curr_pos = curr_pos + 13 char_index = 0 While (Char.IsLetter(data(curr_pos)) = False) curr_pos = curr_pos + 1 End While REM start reading the surname and put it in the array eponymo[30], keeping the letters and the "-" character. name_index = 0 While (Char.IsLetter(data(curr_pos)) = True Or data(curr_pos) = "-") eponymo(name_index) = data(curr_pos) curr_pos = curr_pos + 1 name_index = name_index + 1 End While 107 REM clear the zero-pads from the end of array For i = 0 To 30 If Char.IsDigit(eponymo(i)) = True Then eponymo(i) = "" Next outfile.Write(eponymo + ",") REM REM start reading the small name, +1 position to the right and put it in the array mikro_onoma[20] curr_pos = curr_pos + 1 name_index = 0 While (Char.IsLetter(data(curr_pos)) = True) mikro_onoma(name_index) = data(curr_pos) curr_pos = curr_pos + 1 name_index = name_index + 1 End While End If REM clear the zero-pads from the end of array For i = 0 To 20 If Char.IsDigit(mikro_onoma(i)) = True Then mikro_onoma(i) = "" Next outfile.Write(mikro_onoma + ",") REM REM search for age pattern: 'Ηλικία' curr_pos = 0 While (hlikia <> "Ηλικία") Select Case hlikia(5) 'Horspool rules for age pattern Case "ί" curr_pos = curr_pos + 1 Case "κ" curr_pos = curr_pos + 2 Case "ι" curr_pos = curr_pos + 3 Case "λ" curr_pos = curr_pos + 4 Case "Η" curr_pos = curr_pos + 5 Case Else curr_pos = curr_pos + 6 End Select char_index = 0 For search_index = curr_pos To (curr_pos + 5) hlikia(char_index) = data(search_index) char_index = char_index + 1 Next If ((data.Length - 6) <= curr_pos) Then 'reached the end of data but found no pattern hlikia = "NotFound" Exit While End If End While REM REM move +5 to the right, and save the next 6 characters in the array hlikia If (hlikia <> "NotFound") Then curr_pos = curr_pos + 6 char_index = 0 For search_index = curr_pos To (curr_pos + 5) hlikia(char_index) = data(search_index) char_index = char_index + 1 Next REM search for the age number in the array hlikia. possible ages made by 2 or 3 digits. e.g: 08, 25, 102 108 char_index = 0 While (Char.IsDigit(hlikia(char_index)) = False And (char_index < 4)) 'find the digits. char_index = char_index + 1 End While hlikia_digit(0) = hlikia(char_index) 'this is the first digit of the age REM check if the second char is digit. if it's not, replace it with a space. If (Char.IsLetterOrDigit(hlikia(char_index + 1)) = True) Then hlikia_digit(1) = hlikia(char_index + 1) 'this is the second digit of the age Else : hlikia_digit(1) = Chr(32) End If REM check if the third char is digit. if it's not, replace it with a space. If (Char.IsDigit(hlikia(char_index + 2)) = True) Then hlikia_digit(2) = hlikia(char_index + 2) 'this is the third digit of the age Else : hlikia_digit(2) = Chr(32) End If End If outfile.Write(hlikia_digit + ",") REM REM serch for pattern patient-record "XXXX/XX" (X is digit or "*") If hlikia = "NotFound" Then curr_pos = 0 While (((Char.IsDigit(a_m(0)) = False) And a_m(0) <> "*") Or ((Char.IsDigit(a_m(1)) = False) And a_m(1) <> "*") Or ((Char.IsDigit(a_m(2)) = False) And a_m(2) <> "*") Or ((Char.IsDigit(a_m(3)) = False) And a_m(3) <> "*") Or (a_m(4) <> "/") Or ((Char.IsDigit(a_m(5)) = False) And (a_m(5) <> "*")) Or ((Char.IsDigit(a_m(6)) = False) And (a_m(6) <> "*"))) char_index = 0 For search_index = curr_pos To (curr_pos + 6) a_m(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 7) = curr_pos) Then 'reached the end of data but found no pattern a_m = "NotFoun" Exit While End If End While outfile.Write(a_m + ",") REM REM search for pattern "Eίδος παρασκευάσματος" specimen_type If a_m = "NotFoun" Then curr_pos = 0 While ((eidos_par(1) <> "ί") Or (eidos_par(2) <> "δ") Or (eidos_par(3) <> "ο") Or (eidos_par(4) <> "ς") Or (eidos_par(7) <> "α") Or (eidos_par(8) <> "ρ") Or (eidos_par(9) <> "α") Or (eidos_par(10) <> "σ") Or eidos_par(11) <> "κ") char_index = 0 For search_index = curr_pos To (curr_pos + 20) eidos_par(char_index) = data(search_index) char_index = char_index + 1 Next curr_pos = curr_pos + 1 If ((data.Length - 21) = curr_pos) Then 'reached the end of data but found no pattern eidos_par = "NotFound" Exit While End If End While REM find the position of the first non-space character after the "Είδος Παρασκευάσματος" If (eidos_par <> "NotFound") Then curr_pos = curr_pos + 20 While (Char.IsLetter(data(curr_pos)) = False) 109 curr_pos = curr_pos + 1 End While REM find the position of the string "Για" (end of the specimen type) arxi = curr_pos While (data(curr_pos) <> "Γ" Or data(curr_pos + 1) <> "ι" Or data(curr_pos + 2) <> "α") curr_pos = curr_pos + 1 If curr_pos = (data.Length - 4) Then spec_type = "NotFound" Exit While End If End While REM put the typeofthe specimen in the array spec_type If spec_type <> "NotFound" Then ReDim spec_type(curr_pos - arxi - 1) char_index = 0 For i = arxi To curr_pos - 2 spec_type(char_index) = data(i) char_index = char_index + 1 Next 'remove "return" characters and commas For i = 0 To (curr_pos - arxi - 2) Select Case spec_type(i) Case Chr(13), Chr(10), Chr(9), "," spec_type(i) = Chr(32) End Select Next End If End If outfile.Write(spec_type + ",") REM REM search for pattern "έδειξε" which is the beginning of the result curr_pos = 0 While (edeixe <> "έδειξε") REM Horspool rules Select Case edeixe(5) Case "ξ" curr_pos = curr_pos + 1 Case "ι" curr_pos = curr_pos + 2 Case "ε" curr_pos = curr_pos + 3 Case "δ" curr_pos = curr_pos + 4 Case "έ" curr_pos = curr_pos + 5 Case Else curr_pos = curr_pos + 6 End Select char_index = 0 For search_index = curr_pos To (curr_pos + 5) edeixe(char_index) = data(search_index) char_index = char_index + 1 Next If ((data.Length - 6) <= curr_pos) Then 'reached the end of data but found no pattern edeixe = "NotFound" Exit While End If End While REM put the rest of the data into the dynamic array “apotelesma” 110 If edeixe <> "NotFound" Then arxi = curr_pos char_index = 0 ReDim apotelesma(data.Length - curr_pos + 1) While (curr_pos < data.Length) apotelesma(char_index) = data(curr_pos) char_index = char_index + 1 curr_pos = curr_pos + 1 End While REM remove return chararters and commas For i = 0 To (data.Length - arxi) Select Case apotelesma(i) Case Chr(13), Chr(10), Chr(9), "," apotelesma(i) = Chr(32) End Select Next End If outfile.Write(apotelesma) outfile.Write(vbNewLine) REM REM clear variables ReDim apotelesma(0) ReDim spec_type(0) hmnia = "xxxxxxxxxx" hmnia2 = "xxxxxxxx" ar_prot = "xxxxxxxxxxxxxxx" onoma = "0000000000000" eponymo = "0000000000000000000000000000000" mikro_onoma = "000000000000000000000" hlikia = "000000" hlikia_digit = "xxx" eidos_par = "000000000000000000000" edeixe = "000000" a_m = "xxxxxxx" Next REM REM save and open output file outfile.Close() System.Diagnostics.Process.Start("Notepad.Exe", selected_path + "\EXODOS.CSV") ToolStripStatusLabel1.Text = "Completed." REM quit MS word wordapp.Quit() wordapp = Nothing Exit Sub lathos: MsgBox(Err.Description) Resume Next End Sub Private Sub AboutToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem2.Click MessageBox.Show("Dioscoride (DIscoverer Of hiStologiC repORts and fIelD Extractor)" + vbNewLine + "version: 1.0 (2012)" + vbNewLine + "Creator: Lazaros Papadopoulos", "My Application", _ MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub End Class 111 Παράρτημα ΙΙ. Μακροεντολές VBA 112 REM REM REM Sub Lazaros Papadopoulos © 2013 - GNU General Public License Find and Fix frequent errors in all documents in a folder -------------------------------------------------------UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=True) On Error GoTo ErrorHandler With wdDoc 'Selection.Find.ClearFormatting 'Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "εκιρ" .Replacement.Text = "εκφ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "y" .Replacement.Text = "γ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "!" .Replacement.Text = "/" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "όιρ" .Replacement.Text = "όφ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "rια" .Replacement.Text = "Για" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "σtα" .Replacement.Text = "σία" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "?ιοιρία" .Replacement.Text = "βιοψία" 113 .Forward = True .Wrap = wdFindContinue .IgnoreSpace = True End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "οριρ" .Replacement.Text = "ορφ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "Oν*επ?νυ?ο" .Replacement.Text = "Ονοματεπώνυμο" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .IgnoreSpace = True End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "Η????α" .Replacement.Text = "Ηλικία" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "ιύ" .Replacement.Text = "ώ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "?α?α??ελ?α" .Replacement.Text = "Παραγγελία" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "?α?α?κε?ά???τ??" .Replacement.Text = "Παρασκευάσματος" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "εμιρα" .Replacement.Text = "εμφα" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "Ωστολο" 114 .Replacement.Text = "Η ιστολο" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "μυΙκ" .Replacement.Text = "μυϊκ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "μυτκ" .Replacement.Text = "μυϊκ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "ιιι" .Replacement.Text = "ω" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "ιίι" .Replacement.Text = "ώ" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) With Selection.Find .Text = "ιστοιογική" .Replacement.Text = "ιστολογική" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute(Replace:=wdReplaceAll) End With wdDoc.Close(SaveChanges:=True) strFile = Dir() End While wdDoc = Nothing Application.ScreenUpdating = True Exit Sub ErrorHandler: 'MsgBox (strFile) Resume Next End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path oFolder = Nothing End Function 115 Παράρτημα ΙΙΙ. Κώδικας κατηγοριοποιητή REM REM REM Sub Lazaros Papadopoulos © 2013 - GNU General Public License simple specimen-classifier in MS Excel -------------------------------------------------------CLASSIFIER() Dim end_B, i As Integer i = 1 end_B = ActiveSheet.Range("B1").Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row For x = 1 To end_B If ActiveSheet.Cells(x, 3).Value = Empty Then ActiveSheet.Cells(x, 3).Value = i For y = x To end_B If ActiveSheet.Cells(y, 3).Value = Empty And ActiveSheet.Cells(y, 2).Value = ActiveSheet.Cells(x, 2).Value Then ActiveSheet.Cells(y, 3).Value = i End If Next y i = i + 1 End If Next x End Sub 116 Παράρτημα IV. Αποτελέσματα πειραματικής σύγκρισης των τριών λογισμικών OCR Εικόνα 72. Δείγμα εκτύπωσης laser/inkjet που χρησιμοποιήθηκε στη σύγκριση των λογισμικών OCR 117 Εικόνα 73. Δείγμα εκτύπωσης dot matrix που χρησιμοποιήθηκε στη σύγκριση των λογισμικών OCR 118 Εικόνα 74. Αποτελέσματα μετατροπής με το OmniPage. 119 Εικόνα 75. Αποτελέσματα μετατροπής με το Tesseract VIET-OCR 120 121 Εικόνα 76. Αποτελέσματα μετατροπής με το ABBY Fine Reader. 122 Παράρτημα V. Ειδικοί όροι που ανακαλύφθηκαν κατά το Proof Reading παρειοτραχηλικής παρεκτόπιση παρωτιαίας παρωτιδεκτομή παρωτιδεκτομής παρωτιδομασητηριακής πασαλιδωτή πασσαλιδωτή πασσαλοειδή παστώδες παχοτοιχωματικών παχυτοιχωματικά παχυτοιχωματικού παχυτοιχωματικών περίγραπτη περίγραπτος περιαγγειακά περιαγγειακές περιαγγειακή περιακρορριζική περιεξαρτηματικά περιεξαρτηματικές περιθυρεοειδικό περικογχικό περινευρικές περινευρικούς περινευρικών περιογκικά περιπαρωτιδικοί περιπαρωτιδικούς περιπαρωτιδικό περιπαρωτιδικός περιπορική περιπυρηνική περιπυρηνικής περιπυρηνικών περιτονία περιτονίας περιτονιϊτιδα περιτονιϊτιδας πεταλιώδη πεταλιώδους πιονίδος πλαγιοτραχηλικής πλακώδες πλασματοκυτταρικές πλασματοκυτταρικής πλασματοκυτταρικό πλασματοκυτταρικός πλασματοκυτταροειδή πλασματοκυττοειδούς πλασματοκύτταρα πλασμοκυττάρων πλασμοκυτταρικές πλασμοκυτταροειδή πλασμοκύτταρα πλειομορφία πλειομορφισμός πλειομόρφου πολλαπλούν πολυεστιακή πολυεστιακού πολυεστιακό πολυεστιακότητα 123 Alcian acanthoma actine actinic adenoma amalgam angiomyxoma Bening Blue Bowen Bowenoid Breslow basal basaloid bcl blocks bodies bowen bowenoid breslow brisk Ca Chromogranin Clark Cyst CΙa caldesmon canalicular carcinoma cat cea cell cells centroblastic centrocyte cheilitis cIga cIgG civatte clark comedo condition cyst Dentigerous Desmin desmin diffuse diffused disorder disseminatum duct ductal encapsulated epithelioma erbB Fletser Follicular Fordyce's fibroma fibrous fissuratum follicular fordyce germinal βλεννοπαραγωγά βλεννοπαραγωγού βλεννοπαραγωγών βολβικού βολβικό βραγχιακή βραχιονίου βρεγματοκροταφικής βρεγματομετωπιαίας βρεγματοϊνιακής βυκανητικού Γενειακός Γιγαντοειδής Γιγαντόμορφο Γναθεκτομή Γναθοπροσωπικό Γναθοχειρουργικό γένειο γενείου γενειακή γενειακής γενειακού γενειακό γενειοχειλικής γιγαντοκυττάρων γιγαντοκυτταρικά γιγαντοκυτταρική γιγαντοκυτταρικής γιγαντοκυτταρικού γιγαντοκύτταρα γιγαντόμορφους γλωσσεκτομή γλωσσοϋπερώϊα γλώσσης γναθεκτομή γναθεκτομής γναθιακό γομφιακής γομφικής Δερματοϊνοσάρκωμα Δυσκεράτωση Δυσκερατωσική Δυσπλαστικές Δύο Δύσχρωμη δίστιβο δακρυοκυστίτιδας δακρυόλιθους δενδριτικά δενδριτικών δερματοχόνδρινο δερματοϊνοσάρκωμα δερματοϊνωμα δερμοειδής δερμοειδούς δερμοεπιδερμιδική δερμοεπιδερμιδικού δερμοεπιδερμιδικό δερμοεπιδερμικού δεσμίνη δεσμοπλασία δεσμοπλαστική δεσμοπλαστικού δεσμοπλαστικό κερατοκύστεων κερατοκύστη κερατοϋαλίνης κερατωσική κερατωσικού κερατωσικό κερατωτικού κερατωτικό κερατόλυση κεχρωσμένης κιτρινόφαιο κλινικοεργαστηριακά κλινικοεργαστηριακή κογχικής κογχικού κογχικό κοιλοκυττάρων κοιλοκυττάρωση κοιλοκύτταρα κοκκιοκυτταρικού κοκκιωματώδη κοκκιωματώδης κοκκιωματώδους κοκκιώδης κοκκιώδους κολλαγονοποιημένο κολλαγονοποιημένου κολπώδους κρατηροειδή κροταφίτη κροταφικής κροταφοβρεγματικής κροταφοζυγωματικής κροταφομετωπιαίας κροταφομετωπικής κροταφοπαρειακής κυκλίνη κυλινδρώματος κυπελοειδή κυσταδενολέμφωμα κυσταδενολεμφώματος κυτταροβρίθεια κυτταροβρίθειας κυτταροβριθές κυτταροβριθή κυτταροβριθούς κυτταροδιαγνωστικού κυτταροδιαγνωστικό κυτταροπλασματικά κυτταροπλασματική κυτταροπλασματικής κόγχο κόγχου Λευκοπλακία Λευκοπλακιακή Λευκοπλασιακές Λευκοπλασιακή Λευκόφαιο λειομυωματώδους λεμφαδένας λεμφαδένες λεμφαδενικά λεμφαδενικού λεμφαδενικό οπισθογόμφιου οπισθοτραχηλικής οπισθοωτιαία οπισθοωτιαίας οπισθόζευξης οροαιματηρό οροβλεννογονίων οροβλεννογόνιο οροβλεννογόνιοι οροβλεννογόνιος οροβλεννογόνιου οροβλεννογόνιους οροβλεννογόνο οροβλεννογόνοι οροβλεννογόνος οροβλεννογόνου οροβλεννογόνους οροβλεννογόνων οροβλεννοπαραγωγού οροβλεννοπαραγωγό οροβλεννωδών οροβλεννώδεις οροβλεννώδη οροφή οστέηση οστέϊνες οστίτη οστίτου οστεοβλαστική οστεοδοκίδες οστεοδοκίδων οστεοκλαστική οστεοκλαστικού οστεοκλαστών οστεονέκρωση οστεοποιούμενο οστεοποιούμενου οστεοσύνθεσης οστούν ουλογλωσσικής ουλοπαρειακής ουλοποίηση ουλοποιητική ουλοχειλική ουλοχειλικής ουροθηλιακά οφθαλμεκτομής Πασαλοειδή Πεπαχυμένο Περιακρορριζικό Περιβολβικό Περικόγχιο Περιοστική Προγωνιαίος Προσθία Προστομιακός Προωτιαία Προωτιαίο Προωτιαίος πέμφυγα πέμφυγος παζετοειδή παθολογοανατομικές πανκερατίνη πολυκλωνικά πολυκλωνικό πολυκλωνικός πολυκυστικού πολυλοβωτή πολυμορφοπυρήνων πολυμορφοπυρηνικά πολυμορφοπυρηνικές πολυμορφοπυρηνική πολυμορφοπυρηνικής πολυμορφοπυρηνικού πολυμορφοπυρηνικών πολυποειδές πολυποειδή πολυποειδών πολύπλεξη πολύστιβο πολύστιβου πολύχωρο πορώματος προγεστερονικούς προγεστερονικών προηγηθείσα προλεμφοκυττάρων προσεκβολές προσκεκολλημένο προσκεκολλημένοι προσπονδυλικά προστάτου προστομίου προστομιακά προστομιακή προωτιαία προωτιαίας πτερυγιαίο πτερυγιαίου πυκνοχρωματικό πυογενές πυογενούς πυρήνια πυρήνιο πυρηνίου πυρηνίων πυρηνοκινησίες πυρηνοκινησιών πυρηνοπλασματική πυρηνοπλασματικής πόρωμα Ρινοδακρυϊκός Ρινοχειλική ράχεος ράχεως ραγείσα ραγείσας ραγείσης ριζορινίου ριζορρίνιο ριζορρινίου ρινεκτομής ρινοδακρυϊκού ρινοπαρειάς ρινοπαρειακή ρινοπαρειακής ρινοπλαστική ρινουπερώιου ρινοχειλικής ρινός ροδίνης ροζετοειδών Σαρκοείδωσης Σμηγματογόνες Συγχειλίτιδα Συνδετικολιπώδη Σφαγιτιδικοί govern granula granular Harvard HMWKer Hodgkin Hutchinson hemangioma hodgkin hyperplasia Irritation induratum intranodal irritation juvenile KerHMW KerLMW kaposi keratosis Lacunar Langhans Latta Lentigo Level LMWKer labial lake langhans large lentiginous lentigo lesion level lymphoepithelial lymphoepithelioma lymphoma lymphoproliferative Mac Malherbe Malt Melan MelanΑ Mockenberg Multicentric macula malherbe maligna malignant malt melan melanoma melanotic merkel meta metatypical mixed mockenberg morphea multicentric myoblastoma Nevus Nielsen necrosis neurotized nevi nevus nodule noninvasive odontogenic ossifying otherwise Panker Pautrier Popcorn διαπιστούνται διαπλεκόμενες διαπυηθέντος διατεταμένα διατεταμένο διατεταμένος διατεταμένους διατεταμένων διαυγοκυτταρικού διαφοροποίησης διαφραγμάτια διαφραγματίων διαύγαση διαύγασης διγάστορα διελαύνει διπλοθλαστικό διπλόης δοκίδα δοκίδες δοκίδων δοκιδώδες δοκιδώδη δοκιδώδους δυσκαρύωση δυσκεράτωση δυσκεράτωσης δυσκερατωσικά δυσκερατωσικές δυσκερατωσικού δυσκερατωσικών δυσκερατωτικές δυσπλαστικές δυσπλαστική δυσπλαστικού δυσπλαστικό δυσπλαστικών Εκσεσημασμένη Ενδοεπιδερμιδικό Ενδοεπιδερμικό Ενδοογκικά Εξεντέρωση Εξωστοματικό Εξωφυτικό Εξώστωση Επιδερμιδικές Επιδερμοτροπισμός Επιθηλίωμα Επιθηλιώματα Ερυθρόφαιο Εσωτ εγκλωβισθέντων εισέχουσα εκκρινές εκκρινή εκκρινούς εκσεσημασμένες εκσεσημασμένη εκσεσημασμένης εκτομή εκτομής εκτροπίου ελάστωση ελάστωσης ελαφροχρωματικό ελεύθερα ελικοβακτηρίδια ελκωτικές ελκωτική ελκωτικής ελκωτικού ελκωτικό ενδιασμένου ενδοαυλικού λεμφαδενικός λεμφαδενοειδή λεμφαδενοειδής λεμφαδενοειδούς λεμφοεπιθηλιακές λεμφοεπιθηλιακή λεμφοεπιθηλιακής λεμφοεπιθηλιακού λεμφοεπιθηλιακό λεμφοζίδια λεμφοζιδίου λεμφοζιδίων λεμφοζιδιακή λεμφοζιδιακής λεμφοζιδιακός λεμφοκυτταρικές λεμφοκυτταροπλασματικές λεμφοκόλπους λεμφοκόλπων λεμφοπλασματοκυτταρικές λεμφοπλασματοκυτταρική λεμφοπλασματοκυτταρικό λεμφοϋπερπλαστικής λεμφόκολπο λεπτοκοκκιώδες λεπτοτοιχωματικά λεπτοτοιχωματικό λευκάζουσα λευκοπλακία λευκοπλακίας λευκοπλασιακή λευκοπλαστικές λευκοτεφρόφαιος λευκωπές λευκωπή λευκωπής λευκωπού λευκωπό λευκωπός λευκόφαια λευκόφαιη λευκόφαιης λιποκυττάρων λιποκύτταρα λιπονέκρωσης Μελαγχρωματική Μελαγχρωματικός Μελανόφαιος Μελαχρωματική Μελαχρωματικός Μεσοδόντιο Μικροδορυφόροι Μυρμηκίες μ.δ μακροπυρήνιο μακροφάγα μαργαριτοειδών μαστοκύτταρα μελάχρωση μελαγχρωματική μελαγχρωματικής μελαγχρωματικό μελαγχρωματικών μελανινοκυττάρων μελανινοκύτταρα μελανινοφάγα μελανινοφάγων μελανοκυττάρων μελανοκυτταρική μελανοκυτταρικής μελανοκυτταρικούς μελανοκυτταρικό μελανοκύτταρα παραβασικής παρακεράτωση παρακεράτωσης παρακερατωσικά παρακερατωσικές παρακερατωσική παρακερατωσικού παρακερατωσικό παραρινικής παραρρινικών παραφλοιό παρειοκροταφικής ινομυώδη ινομυώδους ινοξάνθωμα ινοοστέινη ιστιοκυττάρων ιστιοκυττάρωση ιστιοκυττάρωσης ιστιοκυτταρικές ιστιοκυτταρική ιστιοκυτταρικός ιστιοκυττώματος ιστιοκύτταρα ιστιοκύττωμα ιστιοκύττωση ιστογενετικής ιστογενετικός ιστολογική ιστομορφολογικά ιστοπαθολογικά ιστοπαθολογικές ιστοπαθολογικών ιστοτεμάχια ιστοτεμάχιο ιστοτεμαχίου ιστοτεμαχίων ιστοτεμαχιδίου ιστοτεμαχιδίων Καλδεσμόνη Καφεοειδές Καφεοειδής Κερατινοποιημένη Κοκκιωματώδες Κοκκιωματώδης Κροταφίτης καΚόηθους καλδεσμόνη καλπονίνη καλσιτονίνη καλυπτηρίου καλόηθες κανθού καρκινοεμβρυϊκό καρυομεγαλία καστανοφαίου καστανόφαια καστανόφαιες καστανόφαιη καστανόφαιης καστανόφαιο κατάσπαση καφέχρωης καφεοειδή κενοτοπιώδες κενοτοπιώδη κενοτόπια κεντροβλαστικού κεντροκυτταροειδείς κεντροκύτταρα κεράτωση κεράτωσης κερατίαση κερατινοακανθώματος 124 Σφαγιτιδοδιγαστορικό σαρκοείδωση σαρκοείδωσης σαρκομερική σαρκωματοειδές σαρκωματοειδούς σβάννωμ σεμίνωμα σημειούται σιαλαδενικού σιαλολιθίαση σιαλολιθίασης σιδηροφάγων σιελαδενίτιδα σιελαδενίτιδας σιελαδενικού σιελογόνος σιελογόνου σιελόλιθος σκληρίες σμηγματορροϊκή σμηγματορροϊκής σπιλοκυττάρων σπιλοκυτταρικές σπιλοκυτταρικούς σπιλοκυτταρικό σπιλοκυτταρικών σπιλοκύτταρα στερνοκλειδομαστοειδή στερνοκλειδομαστοειδής στερνοκλειδομαστοειδούς στηλίδος στοματορινικό στρογγυλοκυττάρων στρογγυλοκυτταρικές στρογγυλοκυτταρικών στρωματικά συγχειλία συγχειλίας συμπεφορημένα συμφυόμενες συναπεστάλη συναπεσταλέν συναπτοφυσίνη συναφαίρεση συνδετικολιπομυώδη συνδετικολιπώδες συνδετικολιπώδη συνδετικολιπώδης συνδετικολιπώδους συνδετικομυολιπώδους συνεξαιρεθέν συνεξαιρεθέντων συνεξαιρεθείσες συνηγορητικές συνοβιακό συνοδές συρίγγωμα συριγγαδένωμα συριγγοαδενώματος συριγγοκυσταδένωμα συριγγώματος σφαγίτιδα σφαγίτιδας σφαγιτιδικής σφαγιτιδικούς σφαγιτιδικό σφαγιτιδικός σφαγιτιδοδιγαστορικής σφαγιτιδοδιγαστορικός σωληναριακό σωφρονιστήρα ταυτοποιηθεί ταυτοποιηθούν 125 Punch paneth pankeratin periapical pilar pilomatricoma preinvasive psammomatoid pT punch Reed Rushton radicular rushton Salivary Sebaceoma Sjogren Smooth Sternberg Synaptophysin salivary scratch sebaceoma sebaceous sinusoidal situ sma specified spreading sternberg superficial syringoma Touton Trocar tattoo transplant tu tumor unclassified Vimentin variant vasculitis venous vimentin Warthin Xanthoma Ziel zometa άγγιστρο άμφω έκφυσης έμμισχη ίνωση ίνωσης Α.Ν.Θ.Θ. Αγγειονευρώδες Αδενολέμφωμα Ακροριζικές Ακροριζική Ακροχορδόνας Ακτίνη Ανοσοφαινότυπος Απολύματα Αριθ. Ατρακτοειδές αγγειοΐνωμα αγγειοβριθή αγγειοβριθής αγγειοβριθούς αγγειομύξωμα αγγειονευρώδους ενδοδερμιδικού ενδοδερμιδικό ενδοεπιδερμιδικά ενδοεπιδερμιδικές ενδοεπιδερμιδικού ενδοεπιδερμιδικό ενδοεπιθηλιακές ενδοεπιθηλιακή ενδοεπιθηλιακής ενδοεπιθηλιακού ενδοεπιθηλιακό ενδοεπιθηλιακών ενδολόβιων ενδοπαρεγχυματικές ενδοπαρωτιδικοί ενδοπαρωτιδικού ενδοπαρωτιδικούς ενδοπαρωτιδικό ενδοπαρωτιδικός ενδοπυρηνικά ενδοφάτνιο ενολάση εξαγγείωση εξαγγειωμένα εξαρτηματίτιδας εξαρτηματικού εξελκωμένη εξελκωμένο εξελκωμένου εξελκωτικό εξηλκωμένη εξωκυττάρια εξωκύττωσης εξωκύτωσης εξωλεμφαδενικού εξωλεμφαδενικό εξωλεμφοζιδιακού εξωπαρωτιδικός εξωφυτική εξωφυτικής επαλειφόμενα επαλειφόμενο επανασηράγγωση επανασηράγγωσης επασβέστωσης επασβεστιώσεις επασβεστώσεις επασβεστώσεων επηρμένη επιδερμιδικές επιδερμιδική επιδερμιδικής επιδερμιδικών επιδερμοειδές επιδερμοειδή επιδερμοειδούς επιδερμοποίηση επιδερμοτροπισμού επιδερμοτροπισμό επιθηλίωμα επιθηλιοειδή επιθηλιοειδείς επιθηλιοειδούς επιθηλιοειδών επιθηλιόμορφα επιθηλιώματα επιθηλιώματος επικράνια επιμυοεπιθηλιακές επιμυοεπιθηλιακών επιπεφυκότας επιπολής επιφάρυγγα επιχειλίου μελανοφάγα μελανοφάγων μελανοφόρων μελανωτική μελανωτικής μελανόφαια μελανόφαιες μελανόφαιη μελανόφαιης μελανόφαιοι μελανόφαιου μελαχρωματικός μεμβρανική μεμβρανικό μεσεγχυματικά μεσεγχυματογενές μεσεγχυματογενή μεσεγχυματογενής μεσεγχυματογενούς μεσοδοντιαίας μεσοδόντια μεσοθηλιακά μεσολεμφοζιδιακό μεσοφρύου μεσόφρυα μεσόφρυας μεσόφρυο μεταπλασία μεταπλασίας μετατραυματικό μετατριχοειδικά μετατριχοειδικών μετατριχοειδών μετατυπικού μετατυπικούς μετατυπικό μετωποβρεγματικής μετωποζυγωματικής μετωποκροταφική μετωποκροταφικής μηνιγγίωμα μικροαποστημάτια μικροαποστημάτων μικροαποστηματίων μικροδιήθηση μικροδιήθησης μικροδιηθητικό μικροδορυφόροι μικροελκωτική μικροεξέλκωση μικροεξελκώσεις μικροεπασβεστώσεις μικροεπηρμένη μικροθηλώδη μικροθηλώδους μικροκοκκιώδες μικροκυστικός μικροκυτταρικού μικροκυτταρικό μικρονεκρώσεις μικρονεκρώσεων μικροοζώδης μικροοζώδους μικροτεμάχια μικροφυσαλιδώδες μικροϋβώδη μισχωτή μισχωτής μισχωτό μιτωτική μονοκλωνικότητα μονοκυτταροειδή μονοκυτταροειδείς μονοκυτταροειδών κερατινοκυττάρων κερατινοκύστεων κερατινοκύστης κερατινοκύτταρα κερατινοποίηση κερατινοποίησης κερατινοποιημένα κερατινοποιημένο κερατινοποιημένου κερατινοποιούμενες κερατινοποιούμενο κερατινοποιούμενου κερατοακάνθωμα κερατοακανθώματος αποστημάτια αποστηματίων αποστηματοποίηση αποστηματοποίησης αποστηματοποιηθείσα αποστηματοποιημένη αποφολιδωμένα απυρήνα απόλυμα αραιοχρωματικούς αραιοχρωματικό αρτηρίτις αρτηριοσκληρυντικές αρτηριοφλεβικό αρτηριοφλεβώδες ατρακτοκυττάρων ατρακτοκυτταρική ατρακτοκυτταρικής ατρακτοκυτταρικού ατρακτοκυτταρικούς ατρακτοκυτταρικό ατρακτόμορφα ατρακτόμορφου ατρακτόμορφους ατρακτόμορφων ατυπία ατυπίας ατυπίες αυτοάνοσου αυχένος αφαλατωτική αύλακας αύλακος Βιοψία Βιοψικό Βλεννοκύστη βάθει βαθυχρωμασία βαθυχρωματικοί βαθυχρωματικούς βασίφιλη βασίφιλης βασίφιλο βασεόφιλη βασεόφιλης βασεόφιλο βασικοακανθοκυτταρικού βασικοακανθοκυτταρικό βασικοειδή βασικοκυτταρικά βασικοκυτταρικού βασικοκυτταρικό βασικοπλακώδες βασικοπλακώδους βατραχίου βηκανητικού βιμεντίνη βιοψία βιοψικού βιοψικό τεμαχίδια τεμαχίδιο τεμαχιδίου τεμαχιδίων τερμίνθου τεφρόφαια τεφρόφαιη τεφρόφαιης τοίχωμα τομική τομικού τριχειλημματικές τριχειλημματική τριχειλημματικής τριχειλημματικού τριχειλημμώματος τριχειλληματική τριχειλληματικής τριχοβλάστωμα τριχοεπιθηλίωμα τριχοεπιθηλιώματος τριχοθυλάκια τριχοθυλακίτιδα τριχοθυλακίτιδας τριχοθυλακίωμα τριχοθυλακιώματος τριχοσμηγματογόνων Υπερκλείδιος Υπερκόγχια Υπερκόγχιο Υπερωμοϋοειδικός Υπερώϊο Υποβλεννογόνια Υποβλεννογόνιο Υποβλεννογόνιος Υπογενείδιος Υποκόγχιες Υποκόγχιο Υποπεριοστική υαλοειδοποίηση υαλοειδοποίησης υαλοειδοποιημένο υαλοειδοποιημένος υαλοειδοποιημένου υβώδους υπέγερση υπέγερσης υπέρχρωση υπαλείφεται υπερκεράτωση υπερκεράτωσης υπερκερατωσιακού υπερκερατωσικά υπερκερατωσικές υπερκερατωσική υπερκερατωσικού υπερκερατωσικούς υπερκερατωσικό υπερκερατωτικά υπερκερατωτική υπερκερατωτικής υπερκερατωτικού υπερκλείδια υπερκλείδιας υπερκλειδίου υπερκόγχιας υπερκόγχιου υπερκόκκωση υπεροφρύου υπερπαρακερατωσικές υπερπλαστικά υπερπλαστικές υπερπλαστική υπερπλαστικής αγγειοφόρου αγγειοϊνώματος αγγειϊτιδα αδαμαντινοβλάστωμα αδαμαντινώματος αδενοκαρκίνωμα αδενοκαρκινώματος αδενοκυστικού αδενοκυστικό αδενοκυψέλες αδενοκυψελών αδενολέμφωμα αδενολεμφώματος αιμαγγειοπερικύτωμα αιματοπήγματα αιματοπηγμάτων αιμοσιδηρίνη αιμοσιδηρίνης ακάνθωμα ακάνθωση ακάνθωσης ακανθοκυτταρικού ακανθοκυτταρικό ακανθολυτικά ακανθολυτική ακανθολυτικού ακανθωσικού ακανθωτικού ακανθόλυση ακανθώματος ακρορίνιο ακροριζεκτομής ακροριζικής ακροριζικό ακρορινίου ακρορριζική ακρορριζικής ακρορρινίου ακροσπειρώματος ακροχορδόνα ακτίνη ακτινομυκήτων ακτινομύκητα ακτινομύκητες ακυτταρικού αλλοιώσεων αλλοπλαστικό αμαρτωματώδη αμαρτωματώδους αμελανωτικού αμελοβλάστωμα αμελοβλαστώματος αμυλοειδές αμυλοειδούς αναπλασία αναπλαστικότητας αναστομούμενες ανελκτήρα ανευρέθησαν ανθοκραμβοειδή ανοσοβλάστες ανοσοβλαστικού ανοσοβλαστών ανοσοκυτταροχημικός ανοσοστοϊχημικό ανοσοσφαιρίνη ανοσοσφαιρινών ανοσοφαινότυπος ανοσοχρώσεις ανοσοχρώση ανοσοϊστολογική ανοσοϊστοχημικά ανοσοϊστοχημικές ανοσοϊστοχημική επουλίδα επουλίδας επουλίς ερεθισθέντος ερεθισθείσα ερεθισθείσας ερεθισθείσης ερυΘρόφαια ερυθροκύτταρα ερυθροφαίου ερυθρόφαια ερυθρόφαιες ερυθρόφαιη ερυθρόφαιο ερυθρόφαιος ευμεγέθων εφελκιδοποιημένη εφηλίδας εφηλιδοειδή εύθρυπτη ζυγωματοκροταφικής Ημιγναθεκτομή Ηωσινοκυτταρικό ηλώδες ημιγλωσσεκτομή ημιγναθεκτομής ηωσινοφίλων ηωσινόφιλα ηωσινόφιλη ηωσινόφιλο ηωσινόφιλου ΘΕΑΓΕΝΕΙΟ Θηλωματώδης Θηλώδες θηλωμάτωση θηλωμάτωσης θηλωματώδες θηλωματώδη θηλωματώδης θηλωματώδους θηλόμορφη θηλώδεις θηλώδες θηλώδη θηλώδους θρομβωμένου θυλακικής θυλακιώδες θυρεογλωσσικού θυρεοειδικά θυρεοειδικό θυρεοσφαιρίνη Ινοεπιθηλιακό Ινομυολιπώδες Ινομυολιπώδη Ινομυώδης Ιστοτεμάχια Ιστοτεμαχίδιο ιδραδένωμα ιδραδενώματος ιδροκυστώματος ιδροκύστωμα ινιδοειδή ινιδοειδούς ινική ινικής ινοαγγειακό ινοαγγειωματώδη ινοαγγειωματώδης ινοβλάστες ινοβλαστική ινοβλαστικής ινοβλαστικού ινοβλαστικό μονόμορφων μονόστιβο μονόχωρο μυέλωμα μυελογενή μυελοχώρους μυελοχώρων μυκοβακτηρίδια μυξοειδές μυξοειδή μυξοειδής μυξοειδούς μυξωματώδεις μυξωματώδες μυξωματώδη μυξωματώδης μυξωματώδους μυοεπιθηλιακής μυοεπιθηλιακούς μυοεπιθηλιακό μυοεπιθηλιακών μυοεπιθηλιώματος μυολιπώδη μυοϊνοβλαστική μυοϊνοβλαστικής μυρμηκία μυρμηκίας μυρμηκιώδη μυρμηκιώδους μυρμικιώδους μόρφωμα Νεαροποίηση Νεοπλασματική Νευρειλήμμωμα Νευροϊνωμα νεαροποίηση νεαροποίησης νεκροβιωτικού νεκροβιωτικό νεοπλασματικά νεοπλασματικές νεοπλασματική νεοπλασματικής νεοπλασματικού νεοπλασματικούς νεοπλασματικό νεοπλασματικών νευρίνωμα νευρειλημμώματος νευρινωματώδη νευρινώματος νευροειδή νευροειδούς νευροενδοκρινείς νευροενδοκρινικού νευρονική Ξέσματα Ξανθέλασμα ξανθέλασμα ξανθοκοκκιωματώδη ξανθωματώδεις ξανθωματώδη Οδοντογενής Οπισθογόμφιο Οπισθοωτιαίο Οροβλεννογόνιο Οροβλεννογόνο Οστεονεκρωτική Οστεοτεμάχια ογκοειδή ογκοειδείς ογκοκυττάρων ογκοκυτταρική ογκοκυτταρικής βλάστες βλέννη βλεννογονοσχετιζόμενο βλεννογόνιας βλεννογόνιοι βλεννογόνιων βλεννοεκκριτικά βλεννοεκκριτικού βλεννοεκκριτικό βλεννοεκκριτικών βλεννοεπιδερμιδικό βλεννοεπιδερμοειδές βλεννοκήλη βλεννοκήλης βλεννοκύστη βλεννοκύστης υπογενείδια υπογενείδιας υπογενειακής υπογενειδίου υποδορίτιδας υποεπιδερμικά υποεπιθηλιακά υποεπιθηλιακές υποεπιθηλιακή υποκαψικές υποκογχίου υποκογχίως υποκροτάφιου υποκυτταρικού υποκυτταρικών υποκόγχια υποκόγχιας υποκύανη υποστρόγγυλη υποστρόγγυλο υποστρόγγυλοι υποστρόγγυλους υποτύπου υποτύπων υπόσκληρες υπόσκληρη υπόσκληρης υπόσκληρο υπόσκληρος υπόστροφες φέρει φαγοκυτταρώνουν φλεβίδια φλεβιδίων φλεβόλιθοι φυσαλίδος φωλεές Χοληστερινική χήνιο χειλέων χειλίτιδα χειλίτιδας χειλίτις χειρουργηθέν χειρουργηθέντος χονδρίτη χονδροδερματίτιδα χορίου χοριακά χοριακοί χοριακού χοριακούς χοριακό χοριακός χοριακών χοριοεπιδερμιδικής χοριοεπιδερμιδικό χρωμογρανίνη 126 υπερπλαστικοί υπερπλαστικού υπερπλαστικούς υπερπλαστικό υπερπλαστικός υπερπλαστικών υπερχρωμασία υπερχρωματικούς υπερχρωματικών υπερωμοϋοειδικός υπερόφρυα υπερόφρυας υπερώϊα υπερώϊο υπετροφικού υποβλεννογόνια υποβλεννογόνιας υποβλεννογόνιο 127 ανοσοϊστοχημικής ανοσοϊστοχημικοί ανοσοϊστοχημικούς ανοσοϊστοχημικό ανοσοϊστοχημικός αντροδερματικού αποδιαφοροποίηση αποδιαφοροποίησης αποκρινές αποκρινούς απολύματα απολύματος αποπεπλατυσμένο αποπεπλατυσμένων αποπλατυσμένα αποπλατυσμένη αποπτωτικές αποσταλέν ινοβλαστών ινοελαστικά ινοεπιθηλιακού ινοεπιθηλιακούς ινοεπιθηλιακό ινοεπιθηλιακός ινοεπιθηλιωματώδους ινολίπωμα ινολιπομυώδες ινολιπώδες ινολιπώδη ινολιπώδης ινολιπώδους ινολιπώματος ινομεμβρανώδες ινομυολιπώδες ινομυολιπώδους ινομυώδες ογκοκυτταρικού ογκοκυτταρικό ογκοπρωτείνη οδοντογενή οδοντογενούς οζία οζίο οζοειδείς οζώδες οζώδη οιστρογονικούς οιστρογονικών ολιγοκυτταρικές ομοιοτύπων οξύφιλη οξύφιλης οπισθογομφίας οπισθογομφίου χόριο ψαμμωματώδους ψευδοέγκλειστα ψευδοεπιθηλιωματώδη ψευδοεπιθηλιωματώδης ψευδοεπιθηλιωματώδους ψευδοκάψα ψευδοκαρκινωματώδους ψευδοκύστεις ψευδοπολύστιβο ψευδοόζων Ωμοϋοειδής ωμοϋοειδούς ωτιαίο ωτιαίος ωτιαίου ωτός ύγρωμα 128 ΑΚΡΩΝΥΜΑ CCD Charged Couple Device COM Component Object Model CSV Comma Separated Values DBMS GUI HMM ICD JPEG Data Base Management System Graphical User Interface Hidden Markov Model International Classification of Diseases Joint Photographic Experts Group MS Microsoft NLP Natural Language Processing OCR Optical Character Recognition RBAC SQL SVM TIF UMLS VB Role Based Access Control Structured Query Language Support Vector Machines Tagged Image File Unified Medical Language System Visual Basic VBA Visual Basic for Applications ΑΜ Αριθμός Μητρώου ΒΔ Βάση Δεδομένων Η/Υ ΣΔΒΔ ΤΝΔ 129 Ηλεκτρονικός Υπολογιστής Σύστημα Διαχείρισης Βάσεων Δεδομένων Τεχνητό Νευρωνικό Δίκτυο 130 ΓΛΩΣΣΑΡΙ data mining εξόρυξη δεδομένων dot matrix εκτυπωτής ακίδων inkjet εκτυπωτής έγχυσης μελάνης NULL κενό open source pattern proof reading scanner ανοιχτός, ελεύθερος κώδικας πρότυπο, σχήμα επαλήθευση σαρωτής server υπολογιστής-εξυπηρέτης string συμβολοσειρά training file UNICODE web based 131 αρχείο εκπαίδευσης πρότυπο κωδικοποίησης χαρακτήρων διαδικτυακή ΕΥΡΕΤΗΡΙΟ ΟΡΩΝ Dioscoride 61, 80 MS SQL 62, 68 MySQL 62 SQL, ερωτήματα 88 Visual Studio 56 αλγόριθμος, Horspool 38 αλγόριθμος, ωμής βίας 38 βάσεις δεδομένων, ασφάλεια 35 βάσεις δεδομένων, εξόρυξη δεδομένων 36 βάση δεδομένων, εισαγωγή δεδομένων 82 βάση δεδομένων, ρόλοι 71 βάση δεδομένων, σχεδίαση 65 Ηλεκτρονικός Ιατρικός Φάκελος 22 ιστοπαθολογικές εξετάσεις, περιγραφή 44 ιστοπαθολογικές εξετάσεις, πρότυπα αναζήτησης 58 κατηγοριοποίηση 24, 95 μακροεντολές VBA 78 μηχανές διανυσμάτων υποστήριξης 23 μοντέλο συσχετίσεων 65 νευρωνικά δίκτυα 29 οπτική αναγνώριση χαρακτήρων, αδυναμίες 33 133 οπτική αναγνώριση χαρακτήρων, διαδικασία 74 οπτική αναγνώριση χαρακτήρων, εκπαίδευση 74 οπτική αναγνώριση χαρακτήρων, λογισμικό 49 οπτική αναγνώριση χαρακτήρων, μέθοδοι 27 σαρωτής 27 στοματική και γναθοπροσωπική χειρουργική 26 συστήματα διαχείρισης βάσης δεδομένων 62 συστήματα διαχείρισης βάσης δεδομένων, σύγκριση 63 ταξινομητές Bayes 23 134
© Copyright 2024 Paperzz