Development of the ocr part of AOI
Samo Penic
2018-11-23 c9e02129953e3df0d7d36c06608412ae15b46145
Fixes in sid locator for downstairs scanner. (part 1)
3 files modified
30 ■■■■ changed files
.idea/sonarIssues.xml 15 ●●●●● patch | view | raw | blame | history
aoiOcr.py 2 ●●● patch | view | raw | blame | history
aoi_ocr/sid_process.py 13 ●●●● patch | view | raw | blame | history
.idea/sonarIssues.xml
@@ -33,7 +33,17 @@
            <set />
          </value>
        </entry>
        <entry key="$USER_HOME$/PycharmProjects/berki-parse/testcases/dvovod31.txt">
          <value>
            <set />
          </value>
        </entry>
        <entry key="$USER_HOME$/PycharmProjects/berki-parse/testcases/silaCurka1.txt">
          <value>
            <set />
          </value>
        </entry>
        <entry key="$PROJECT_DIR$/../../django/sizif-web/aoi/Dockerfile">
          <value>
            <set />
          </value>
@@ -58,6 +68,11 @@
            <set />
          </value>
        </entry>
        <entry key="$PROJECT_DIR$/../../django/sizif-web/aoi/exam/forms.py">
          <value>
            <set />
          </value>
        </entry>
        <entry key="$PROJECT_DIR$/../../django/sizif-web/aoi/exam/models.py">
          <value>
            <set />
aoiOcr.py
@@ -28,7 +28,7 @@
    "processed_scans/20160510075445995_0026.tif",
]
# p=Paper(filename=pa[9], sid_classifier=classifier, settings=settings)
p = Paper(filename="test3.tif", sid_classifier=classifier, settings=settings)
p = Paper(filename="sizif.tif", sid_classifier=classifier, settings=settings)
# print(p.QRData)
# print(p.errors)
aoi_ocr/sid_process.py
@@ -17,9 +17,9 @@
def find_biggest_blob(image, original_image, sid_mask):
    if sid_mask[0] == "1":
        move_left = 35
        move_left = 45
    elif sid_mask[0] == "x":
        move_left = 40
        move_left = 50
    else:
        move_left = 0
    # Remove noise
@@ -27,7 +27,7 @@
        original_image, cv2.MORPH_OPEN, kernel(2, 2), iterations=3
    )
    # find biggest block of pixels
    image1 = cv2.morphologyEx(image2, cv2.MORPH_DILATE, kernel(5, 25), iterations=4)
    image1 = cv2.morphologyEx(image, cv2.MORPH_DILATE, kernel(5, 25), iterations=3)
    image1 = img_as_ubyte(image1 > 50)
    cv2.imwrite("/tmp/sidblock1.png", image1)
    im2, ctrs, hier = cv2.findContours(
@@ -37,7 +37,7 @@
        ctrs, key=lambda ctr: cv2.contourArea(ctr)
    )  # get bigges contour
    x, y, w, h = cv2.boundingRect(sorted_ctrs[-1])
    image = image[y : y + h, x + 25 - move_left : x + w - 40]  # +25,-25
    image = image[y : y + h, x + 25 - move_left : x + w - 30]  # +25,-25
    return image
@@ -191,7 +191,7 @@
    cv2.imwrite("/tmp/enSID0.png", image)
    # Remove noise
    # image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(2, 2), iterations=3)
    image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(3, 3), iterations=3)
    # Closing. Connect non connected parts
    image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel(5, 1), iterations=4)
@@ -202,12 +202,13 @@
    image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(3, 3), iterations=1)
    # Skeletonization
    #image = img_as_ubyte(morphology.skeletonize(image > 128))
    image = img_as_ubyte(morphology.thin(image > 128))
    cv2.imwrite("/tmp/enSID1.png", image)
    # Stub removal (might not be necessary if thinning instead of skeletonize is used above
    # Making lines stronger
    image = cv2.morphologyEx(image, cv2.MORPH_DILATE, kernel(5, 5), iterations=1)
    image = cv2.morphologyEx(image, cv2.MORPH_DILATE, kernel(5, 2), iterations=1)
    image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel(10, 10))
    # Thining again