Skip to content

Commit

Permalink
Merge 6ce5c74 into fd9b25e
Browse files Browse the repository at this point in the history
  • Loading branch information
AminovE99 committed Nov 15, 2019
2 parents fd9b25e + 6ce5c74 commit 4dfded3
Show file tree
Hide file tree
Showing 10 changed files with 118 additions and 15 deletions.
3 changes: 3 additions & 0 deletions .travis/Dockerfile.alpine
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ RUN set -ex; \
imagemagick \
imagemagick-dev \
tesseract-ocr \
tesseract-ocr-dev \
leptonica \
pkgconfig \
; \
sudo sed -i \
-e 's/rights="none" pattern="PDF"/rights="read" pattern="PDF"/g' \
Expand Down
3 changes: 3 additions & 0 deletions .travis/Dockerfile.debian
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ RUN set -ex; \
ghostscript \
imagemagick \
tesseract-ocr \
libtesseract-dev \
libleptonica-dev \
pkg-config \
; \
sudo rm -rf /var/lib/apt/lists/*; \
sudo sed -i \
Expand Down
3 changes: 3 additions & 0 deletions .travis/Dockerfile.debian-slim
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ RUN set -ex; \
ghostscript \
imagemagick \
tesseract-ocr \
libtesseract-dev \
libleptonica-dev \
pkg-config \
; \
sudo rm -rf /var/lib/apt/lists/*; \
sudo sed -i \
Expand Down
17 changes: 14 additions & 3 deletions erpnext_ocr/erpnext_ocr/doctype/ocr_language/ocr_language.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
// Copyright (c) 2019, Monogramm and contributors
// For license information, please see license.txt

frappe.ui.form.on('OCR Language', {
refresh: function (frm) {
frappe.ui.form.on('OCR Language', "lang", function (frm) {
if (typeof frm.doc.lang != "undefined") {
frappe.call({
args: {
"lang": frm.doc.lang
},
method: "erpnext_ocr.erpnext_ocr.doctype.ocr_language.ocr_language.check_language_web",
callback: function (r) {
console.log(r.text);
frm.set_value("is_supported", r.message);
}
});
}
}
});
);
35 changes: 34 additions & 1 deletion erpnext_ocr/erpnext_ocr/doctype/ocr_language/ocr_language.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,39 @@
"set_only_once": 0,
"translatable": 0,
"unique": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "is_supported",
"fieldtype": "Read Only",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": " Is supported",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}
],
"has_web_view": 0,
Expand All @@ -93,7 +126,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2019-08-17 00:52:25.266181",
"modified": "2019-11-08 09:26:39.984652",
"modified_by": "Administrator",
"module": "ERPNext OCR",
"name": "OCR Language",
Expand Down
19 changes: 18 additions & 1 deletion erpnext_ocr/erpnext_ocr/doctype/ocr_language/ocr_language.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,25 @@
# For license information, please see license.txt

from __future__ import unicode_literals

import frappe
import tesserocr
from frappe.model.document import Document



@frappe.whitelist()
def check_language_web(lang):
return "Yes" if lang_is_support(lang) else "No"


@frappe.whitelist()
def lang_is_support(lang):
if lang == 'en':
lang = "eng"
list_of_languages = tesserocr.get_languages()[1]
return lang in list_of_languages


class OCRLanguage(Document):
pass
pass
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,14 @@
import frappe
import unittest

from erpnext_ocr.erpnext_ocr.doctype.ocr_language.ocr_language import lang_is_support, check_language_web


class TestOCRLanguage(unittest.TestCase):
pass
def test_english_language(self):
decision = lang_is_support("en")
self.assertTrue(decision)

def test_check_language_web(self):
decision = check_language_web("en")
self.assertTrue(decision == "Yes")
10 changes: 6 additions & 4 deletions erpnext_ocr/erpnext_ocr/doctype/ocr_read/ocr_read.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ frappe.ui.form.on('OCR Read', {
frappe.call({
method: "read_image",
doc: cur_frm.doc,
callback: function (r, rt) {
if (r.message) {
console.log(r.message);
callback: function (r) {
if (r.message.is_error) {
cur_dialog.hide();
frappe.msgprint(r.message.message);
} else {
cur_frm.set_value("read_result", r.message);
cur_dialog.hide()
}

}
});
}
Expand Down
31 changes: 26 additions & 5 deletions erpnext_ocr/erpnext_ocr/doctype/ocr_read/ocr_read.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,28 @@

from __future__ import unicode_literals
import frappe
from erpnext_ocr.erpnext_ocr.doctype.ocr_language.ocr_language import lang_is_support
from frappe.model.document import Document

import os
import io


class LangSupport(Exception):
def __init__(self, message):
pass


class OCRRead(Document):
def read_image(self):
text = read_document(self.file_to_read, self.language or 'eng')
dict_message = read_document(self.file_to_read, self.language or 'eng')

self.read_result = text
self.save()
return text
if not dict_message['is_error']:
self.read_result = dict_message["message"]
self.save()
return dict_message["message"]
else:
return dict_message


@frappe.whitelist()
Expand All @@ -28,6 +38,17 @@ def read_document(path, lang='eng'):
if path is None:
return None

try:
if not lang_is_support(lang):
raise LangSupport({"message": "Your system doesn't support " + lang + " language"})
except LangSupport as e:
details = e.args[0]
message = "The selected language is not available. Please contact your administrator."
message_dict = {}
message_dict['message']= message
message_dict['is_error'] = True
return message_dict

if path.startswith('/assets/'):
# from public folder
fullpath = os.path.abspath(path)
Expand Down Expand Up @@ -67,7 +88,7 @@ def read_document(path, lang='eng'):

text.split(" ")

return text
return {"is_error": False, "message": text}


def force_attach_file_doc(filename, name):
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ requests
pytesseract
pillow
wand
tesserocr

0 comments on commit 4dfded3

Please sign in to comment.