:클러스터 경계 상자와 그들에 선을 그립니다 (OpenCV의, 파이썬) 나는 아래 이미지에서 문자 주위에 약간의 경계 상자를 만들어이 코드
import csv
import cv2
from pytesseract import pytesseract as pt
pt.run_tesseract('bb.png', 'output', lang=None, boxes=True, config="hocr")
# To read the coordinates
boxes = []
with open('output.box', 'rt') as f:
reader = csv.reader(f, delimiter=' ')
for row in reader:
if len(row) == 6:
boxes.append(row)
# Draw the bounding box
img = cv2.imread('bb.png')
h, w, _ = img.shape
for b in boxes:
img = cv2.rectangle(img, (int(b[1]), h-int(b[2])), (int(b[3]), h-int(b[4])), (0, 255, 0), 2)
cv2.imshow('output', img)
cv2.waitKey(0)
OUTPUT
내가 원하는 것은 :
프로그램은 테두리 상자의 X 축에 수직선을 그려야합니다 (첫 번째 및 세 번째 텍스트 영역에만 해당). 중간에있는 사람은 그 과정에 관심이 없어야합니다.)
목표는 이것입니다 (그리고 그것을 달성하는 또 다른 방법이 있습니다, 설명해주십시오) : 일단이 두 라인 (또는 더 나은 좌표 그룹)을 가지고이 두 영역을 커버하기 위해 마스크를 사용하십시오.
은 가능합니까?원본 이미지 : 요청으로
CSV : 인쇄 (박스)
[['l', '56', '328', '63', '365', '0'], ['i', '69', '328', '76', '365', '0'], ['n', '81', '328', '104', '354', '0'], ['e', '108', '328', '130', '354', '0'], ['1', '147', '328', '161', '362', '0'], ['m', '102', '193', '151', '227', '0'], ['i', '158', '193', '167', '242', '0'], ['d', '173', '192', '204', '242', '0'], ['d', '209', '192', '240', '242', '0'], ['l', '247', '193', '256', '242', '0'], ['e', '262', '192', '292', '227', '0'], ['t', '310', '192', '331', '235', '0'], ['e', '334', '192', '364', '227', '0'], ['x', '367', '193', '398', '227', '0'], ['t', '399', '192', '420', '235', '0'], ['-', '440', '209', '458', '216', '0'], ['n', '481', '193', '511', '227', '0'], ['o', '516', '192', '548', '227', '0'], ['n', '553', '193', '583', '227', '0'], ['t', '602', '192', '623', '235', '0'], ['o', '626', '192', '658', '227', '0'], ['t', '676', '192', '697', '235', '0'], ['o', '700', '192', '732', '227', '0'], ['u', '737', '192', '767', '227', '0'], ['c', '772', '192', '802', '227', '0'], ['h', '806', '193', '836', '242', '0'], ['l', '597', '49', '604', '86', '0'], ['i', '610', '49', '617', '86', '0'], ['n', '622', '49', '645', '75', '0'], ['e', '649', '49', '671', '75', '0'], ['2', '686', '49', '710', '83', '0']]
이 편집 :
이 zindarod
대답을 사용하려면 tesserocr이 필요합니다. pip install tesserocr
을 통해 설치하면 다양한 오류가 발생할 수 있습니다. 휠 버전을 찾았습니다. (몇 시간 후에 설치하고 오류를 해결하고 답변 아래 내 의견을 참조하십시오 ...) : here you can find/download it. 이 도움이
희망 ..
테두리 상자를 클러스터 한 다음 줄 1 클러스터에서 최대 y를 얻고 줄 2 클러스터에서 최소 y를 얻고 2 y 및 모든 너비를 사용하여 사각형을 만들 것을 제안합니다. 마스크를 가지고있다. – api55
맞아. 그것을하는 방법을 알고 있습니까? 또한이 연구를위한 또 다른 키워드 인 "Connected-component labeling"을 발견했습니다. – Link
연결된 구성 요소는 작동하지 않습니다. 모든 사람들이 어떻게 든 연결되어 있다면이 방법이 효과적입니다. 그러나 y 값과 k = 3을 가진 k-means를 사용할 수 있습니다. 그러면 y 값에 따라 3 개의 문자 클러스터가 생깁니다. kmeans가 opencv에서 구현되었습니다 – api55