Αναζήτηση & αντιγραφή σε κείμενα με παλιά κωδικοποίηση (όχι Unicode)

Προβληματισμός, προτάσεις και λύσεις για "αναβάθμιση" του Η/Υ σε εργαλείο παραγωγικότητας!
Λειτουργικά συστήματα, Backup/Recovery, χρήση του hardware I/O.
Απάντηση
Άβαταρ μέλους
GeorgeVita
Διαχειριστής
Δημοσιεύσεις: 624
Εγγραφή: 04 Σεπ 2013, 21:51
Ονομα: Γιώργος
Επικοινωνία:

Αναζήτηση & αντιγραφή σε κείμενα με παλιά κωδικοποίηση (όχι Unicode)

Δημοσίευση από GeorgeVita »

Αναζήτηση & αντιγραφή σε κείμενα με παλιά κωδικοποίηση (όχι Unicode)

Το πρόβλημα
Πρόσφατα χρειάστηκα πληροφόρηση σε θέματα εμπορικής νομοθεσίας και βρήκα τους νόμους από την ιστοσελίδα αναζήτησης του Εθνικού Τυπογραφείου. Ομως, ενώ τα αρχεία pdf ήταν αναγνώσιμα, δεν μπορούσα να κάνω αναζήτηση ή αντιγραφή και επικόλληση λόγω παλιάς κωδικοποίησης των ελληνικών χαρακτήρων! Το πρόβλημα εμφανίζεται ανεξάρτητα από το λειτουργικό σύστημα, τον browser ή το pdf reader.

Με πολύ ψάξιμο, debugging και βοήθεια από το adslgr/forum/unix-linux συμπέρανα ότι πρόκειται για κωδικοποίηση ANSI Windows-1253". Οι διαφορές σε σχέση με την κωδικοποίηση Unicode αναφέρονται στο ftp://ftp.unicode.org/Public/MAPPINGS/V ... CP1253.TXT.

Στα πολύ πρόσφατα αρχεία όπως στην "ημερήσια κυκοφορία" δεν υπάρχει πρόβλημα. Σημειώστε αν δε το γνωρίζετε ότι για να κατεβάσετε/ανοίξετε το pdf του νόμου πατάτε πάνω στο εικονίδιο Εικόνα.

Λύση για την αναζήτηση στο browser ή το pdf reader
Για να πετύχω δυνατότητα αναζήτησης στο "γράμμα του νόμου", σκέφτηκα να ρυθμίσω το πληκτρολόγιό μου για να γράφει σε cp1253. Βέβαια δεν μπόρεσα να φτιάξω το οπτικό αποτέλεσμα στο παράθυρο αναζήτησης οπότε:
η "ΕΦΗΜΕΡΙΣ ΤΗΣ ΚΥΒΕΡΝΗΣΕΩΣ" εμφανίζεται ως "ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ"
(πατήστε το σύνδεσμο για να δείτε πόσα αποτελέσματα θα φέρει η google)

Η ρύθμιση του πληκτρολογίου σε Ubuntu έγινε με τροποποίηση του αρχείου /usr/share/X11/xkb/symbols/gr του xkb.
Σε κάθε πλήκτρο ελληνικού χαρακτήρα συμπλήρωσα τους ορισμούς για "level 5". Παράδειγμα για το πλήκτρο "Ε":

Κώδικας: Επιλογή όλων

από:
    key <AD03> { [         Greek_epsilon,  Greek_EPSILON ] }; // ε Ε
σε:
    key <AD03> { type[Group1]="EIGHT_LEVEL", [         Greek_epsilon,  Greek_EPSILON , NoSymbol, NoSymbol, U00C5 ] }; // ε Ε
Ρύθμισα το πλήκτρο "RWIN" ως "Key to choose 5th level" μέσω των ρυθμίσεων του "Keyboard Preferences".
Οπως ανέφερα παραπάνω, για το "Ε" πληκτρολογώ Δεξί windows key+E αλλά βλέπω Å.
Ο κωδικός "U00C5" είναι το ισοδύναμο δεκαεξαδικό σε UTF-8 του &#197 ("Ε" στο ANSI Windows-1253).
Η προκαθορισμένη αναφορά "EIGHT_LEVEL" είναι λόγω ύπαρξης 3ων στοιχείων επιλογής (shift, AltGr, RWIN)
Τα ενδιάμεσα "NoSymbol" είναι για να μην επηρεαστούν οι αντιστοιχίες όταν πατάμε "AltGr"+πλήκτρο.

Παρακάτω φαίνεται το πρόβλημα και η λύση για την αναζήτηση:

Εικόνα

Λύση για τη σωστή μεταφορά κειμένου (αντιγραφή/επικόλληση)
Για τη μετατροπή της κωδικοποίησης των ελληνικών χαρακτήρων κατά την αντιγραφή-επικόλληση χρησιμοποιώ ένα μικρό πρόγραμμα python το οποίο προσθέτει ένα offset 720 ή 740 στον κώδικα των ελληνικών γραμμάτων. Αυτό γίνεται εντός του clipboard (πρόχειρο) που χρησιμοποιείται για την αντιγραφή-επικόλληση (copy-paste). Π.χ. για το κεφαλαίο "Ε" πρέπει να γίνει μετατροπή από "U00C5" (χαρακτήρας Å) σε "U0395" (χαρακτήρας Ε).

Το πρόγραμμα σε python
Αρκετά απλό το πρόγραμμα της μετατροπής με το ενδιαφέρον σημείο ότι διαβάζει/γράφει από/το πρόχειρο (clipboard).

Κώδικας: Επιλογή όλων

#!/usr/bin/env python
# ETpdf2.py
import pygtk
pygtk.require('2.0')
import gtk

clipboard = gtk.Clipboard()
neaData="it is empty!"
neaData = clipboard.wait_for_text()

neaData=neaData.replace(unichr(161),unichr(161+740))
neaData=neaData.replace(unichr(162),unichr(162+740))

for char1253 in range(180,181) + range(184,187) + range(188,189) + range(190,210) + range(211,255):
	neaData=neaData.replace(unichr(char1253),unichr(char1253+720))

clipboard.set_text(neaData)
clipboard.store()
Δεν χρειάζονται πολλά σχόλια για την περιγραφή του προβλήματος και του αποτελέσματος:

Εικόνα


Τελική ρύθμιση και χρήση με συντόμευση πληκτρολογίου
Για να γίνει εύχρηστη όλη η διαδικασία έφτιαξα μια συντόμευση πληκτρολογίου (keyboard shortcut) που τρέχει τον "αυτοσχέδιο διορθωτή κειμένων εθνικού τυπογραφείου".

Συνοπτικά η διαδικασία έχει γίνει:
- επιλογή με το ποντίκι
- αντιγραφή (Ctrl-C) στο πρόχειρο
- πατάω τη δική μου συντόμευση πληκτρολογίου για τη μετατροπή (cp1234->Unicode)
- επικόλληση (Ctrl-V) από το πρόχειρο στο σημείο που χρειάζομαι


Υ.Γ. αντίστοιχο ίσως και μεγαλύτερο πρόβλημα υπάρχει στα pdf της Στατιστικής Αρχής.
Απάντηση

Επιστροφή στο “Ο Η/Υ ως εργαλείο παραγωγικότητας!”