Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Aniket025
GitHub Repository: Aniket025/Medical-Prescription-OCR
Path: blob/master/Model-5/main_2.py
427 views
1
import preprocess as pp
2
import word_detection as wd
3
#import word_classification as wc
4
import google_ocr as go
5
import create_prescription as cp
6
import spell
7
8
import argparse
9
import glob
10
import os
11
import numpy as np
12
import cv2
13
import sys
14
import time
15
16
#Running instructions - python2 main_2.py --google-ocr
17
parser = argparse.ArgumentParser()
18
parser.add_argument('--google-ocr', action="store_true",dest='google_ocr',default=False)
19
parser.add_argument('--file', action="store", dest="filename", type=str)
20
21
if __name__ == "__main__":
22
dictionary = {}
23
start_time = time.time()
24
spell.create_dictionary(dictionary,"./all_medical_terms.txt")
25
run_time = time.time() - start_time
26
print '%.2f seconds to run' % run_time
27
28
filename = parser.parse_args().filename
29
#Load image and change channels
30
image = cv2.cvtColor(cv2.imread(filename), cv2.COLOR_BGR2RGB)
31
32
#Pre-processing = Cropping + Binarization
33
imageEdges = pp.edgesDet(image, 200, 250)
34
closedEdges = cv2.morphologyEx(imageEdges, cv2.MORPH_CLOSE, np.ones((5, 11)))
35
pageContour = pp.findPageContours(closedEdges, pp.resize(image))
36
pageContour = pageContour.dot(pp.ratio(image))
37
newImage = pp.perspImageTransform(image, pageContour)
38
39
#Saving image to show status in the app
40
save_filename = filename[:-4]+"_1"+filename[-4:]
41
cv2.imwrite(save_filename, cv2.cvtColor(newImage, cv2.COLOR_BGR2RGB))
42
43
##Detect words using google-ocr
44
if (parser.parse_args().google_ocr):
45
entities,bBoxes = go.convert(save_filename)
46
detected_filename = "input.txt"
47
with open(detected_filename, 'w') as outfile:
48
for i in entities:
49
outfile.write(i)
50
outfile.write("\n")
51
spell.spellcheck(dictionary, "./input.txt")
52
entities = []
53
with open("output.txt") as file:
54
entities = file.readlines()
55
entities = [x.strip() for x in entities]
56
save_filename = filename[:-4]+"_2"+filename[-4:]
57
cp.draw(bBoxes,entities,save_filename,newImage.shape[0],newImage.shape[1])
58
59
else:
60
blurred = cv2.GaussianBlur(newImage, (5, 5), 18)
61
edgeImg = wd.edgeDetect(blurred)
62
ret, edgeImg = cv2.threshold(edgeImg, 50, 255, cv2.THRESH_BINARY)
63
bwImage = cv2.morphologyEx(edgeImg, cv2.MORPH_CLOSE, np.ones((20,20), np.uint8))
64
65
#bBoxes1 = wd.textDetect(bwImage, newImage)
66
wbBoxes = wd.textDetectWatershed(bwImage, newImage)
67
68