null

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
ΘΕΣΣΑΛΟΝΙΚΗΣ
ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ
ΙΑΤΡΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ
Δημιουργία συστήματος διαχείρισης βάσης
ιστολογικών εξετάσεων
στοματογναθοπροσωπικής χειρουργικής
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