Save glyph database on exit, load on startup.
This commit is contained in:
parent
a929d1011b
commit
5babd24450
2 changed files with 19 additions and 3 deletions
|
|
@ -46,6 +46,7 @@ def main():
|
||||||
ocr.pageChanged.connect(win.pageScene.setPage)
|
ocr.pageChanged.connect(win.pageScene.setPage)
|
||||||
ocr.unknownGlyph.connect(win.unknownGlyph)
|
ocr.unknownGlyph.connect(win.unknownGlyph)
|
||||||
win.glyphEntered.connect(ocr.give_help)
|
win.glyphEntered.connect(ocr.give_help)
|
||||||
|
app.aboutToQuit.connect(ocr.save_glyphdb)
|
||||||
ocr.start()
|
ocr.start()
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
import pickle
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from os import path
|
from os import path
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
|
@ -34,10 +35,24 @@ class OCREngine(QThread):
|
||||||
|
|
||||||
def __init__(self, dirname):
|
def __init__(self, dirname):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self.dirname = dirname
|
||||||
self.filenames = glob(path.join(dirname, '*.png'))
|
self.filenames = glob(path.join(dirname, '*.png'))
|
||||||
self.chardb = {}
|
self.glyphdb_filename = path.join(self.dirname, 'glyphdb.pickle')
|
||||||
|
self.glyphdb = self.load_glyphdb()
|
||||||
self.help_queue = Queue()
|
self.help_queue = Queue()
|
||||||
|
|
||||||
|
def load_glyphdb(self):
|
||||||
|
if path.isfile(self.glyphdb_filename):
|
||||||
|
with open(self.glyphdb_filename, 'rb') as glyphdb_file:
|
||||||
|
glyphdb = pickle.load(glyphdb_file)
|
||||||
|
else:
|
||||||
|
glyphdb = {}
|
||||||
|
return glyphdb
|
||||||
|
|
||||||
|
def save_glyphdb(self):
|
||||||
|
with open(self.glyphdb_filename, 'wb') as glyphdb_file:
|
||||||
|
pickle.dump(self.glyphdb, glyphdb_file)
|
||||||
|
|
||||||
def load_page(self, filename):
|
def load_page(self, filename):
|
||||||
return Page(Image.fromfile(filename).unframe(10))
|
return Page(Image.fromfile(filename).unframe(10))
|
||||||
|
|
||||||
|
|
@ -63,10 +78,10 @@ class OCREngine(QThread):
|
||||||
if isinstance(glyph, Space):
|
if isinstance(glyph, Space):
|
||||||
return ' '
|
return ' '
|
||||||
try:
|
try:
|
||||||
return self.chardb[glyph.key]
|
return self.glyphdb[glyph.key]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
text = self.ask_for_help(glyph)
|
text = self.ask_for_help(glyph)
|
||||||
self.chardb[glyph.key] = text
|
self.glyphdb[glyph.key] = text
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def ask_for_help(self, unknown_glyph):
|
def ask_for_help(self, unknown_glyph):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue