Please see the newly added table detector to the master branch https://github.com/tesseract-ocr/tesseract/pull/3330
On Mon, Mar 22, 2021, 10:53 Daniel Lu <danielchen...@gmail.com> wrote: > Hi, > > I am trying to read hundreds of pages of information like the picture > below into a CSV file. For us humans, it is very clear where the > information should go in each of the four columns. But I am trying to use > tesseract to do this! > > This is my code right now: > > ```{python} > import cv2 > import pytesseract > import xlsxwriter > import re > > img = cv2.imread("*image file path") > pytesseract.pytesseract.tesseract_cmd = r"*tesseract location" > > # Initialize the workbook > workbook = xlsxwriter.Workbook('result.xlsx') > worksheet = workbook.add_worksheet() > > # Convert to the gray-scale > gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) > > # Threshold > thr = cv2.threshold(gry, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] > > # OCR > txt = pytesseract.image_to_string(thr, config="--psm 11") > > # Add ocr to the corresponding part > txt = txt.split("\n") > > > row = 0 > col = 0 > > for txt1 in txt: > # Skip over OCR strings that are just spaces or '' > if txt1.isspace() or txt1 == '': > continue > > # Hard code detection > ...let's just place it into the last column for now > > # Theoretically, the state ("Alaska" in this case) will be in column 0 in > the same row > if re.match(r"\d*\sOpen\sRestaurants", txt1): > col == 3 > > worksheet.write(row//4, col%4, txt1) > col += 1 > row += 1 > > workbook.close() > > ``` > However, there are still a lot of miss-alignments, especially when some > addresses or names take more than one line. Additionally, why is the text > on the first line read in a different order compared to the rest of the > rows? > > I was thinking that perhaps I could enforce that every fourth txt is in > alphabetical order and use that to detect misalignment? But if even the > first row is incorrect, I'm not sure how much I want to hard code > corrections. Additionally, sometimes the multiple line entries arise from > the address column while other times it arises from the name column (e.g. > 258 Interstate Commercial Park Loop on the left-hand side of the page). > > Below are some screenshots of mixups on the left and right. > > Any help would be greatly appreciated! Thank you! > > > > > -- > You received this message because you are subscribed to the Google Groups > "tesseract-ocr" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to tesseract-ocr+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tesseract-ocr/fbdeeed7-87b6-4e8c-9cf9-d91e0d84f04an%40googlegroups.com > <https://groups.google.com/d/msgid/tesseract-ocr/fbdeeed7-87b6-4e8c-9cf9-d91e0d84f04an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "tesseract-ocr" group. To unsubscribe from this group and stop receiving emails from it, send an email to tesseract-ocr+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tesseract-ocr/CAG2NduU3XnZ2wgnNtkAJqpA5tr-GQk3aR0j2-fAxRKL5TPWiqg%40mail.gmail.com.