> > So if I understand you correctly you mean that I could create a script > that runs "pyautogui.locateOnScreen" for each possible name, team and > position and when two y-values match (within a few pixels +/-) I have the > position for that player and then create my output based on that?
Yes. Learning pyautogui is a good investment. It can help you to automate a lot of repetitive GUI tasks... even playing games ;-) [1] (But be careful using bots in games is usually forbidden :-| ) When I'm running OCR with command: 'tesseract C:\f1_grayscale.png test.txt > --psm 6' it gives the output: This is totally useless. Did you read documentation[2]? You have to remove all graphics elements, usually also jpg artefacts... And because your text has a table structure you need to make a layout analysis (on input image) by yourself. [1] https://inventwithpython.com/blog/2014/12/17/programming-a-bot-to-play-the-sushi-go-round-flash-game/ [2] https://github.com/tesseract-ocr/tessdoc/blob/main/ImproveQuality.md Zdenko po 23. 5. 2022 o 0:01 Peter Vallsten <[email protected]> napísal(a): > Hi zdenop! > Thanks for your reply! Great to know that it could be done with easier > methods, I've never quite worked with python before though! > So if I understand you correctly you mean that I could create a script > that runs "pyautogui.locateOnScreen" for each possible name, team and > position and when two y-values match (within a few pixels +/-) I have the > position for that player and then create my output based on that? > It would be easier to just have to use OCR on the numbers but I'm not sure > though how I would use that previous information to connect the time to > each driver. > Do you have any example of the quick test that you ran how you did it? > Any suggestions how I can correctly read the numbers and connecting them > to the names? > > When I'm running OCR with command: 'tesseract C:\f1_grayscale.png test.txt > --psm 6' it gives the output: > > = hs ~Xi2, =e 3 > = ~~ y - Nae > —-ORNUL > 1 MONACO GRAND PRIX - SHORT QUALIFYING > a POS. DRIVER TEAM TYRE BEST GAP > Ly Advance > > 1 BK Lewis HAMILTON I Mercedes-AMG Petronas W) 1:26.147 - > Lad > is 2 im Max VERSTAPPEN Red Bull ) 1:26.383 +0.236 Amr > SS WI Race Director = ~ > ’ t 3 gee ValtteriBOTTAS I Mercedes-AMG Petronas W) 1:26.431 +0.284 es > Pr: ak a = = : -- > ” —_ : 4 5 Sergio PEREZ Red Bull WN) 1:26.538 +0.391 =——. > = Restart Session « = x 2a > 3 fgg Charles LECLERC | Ferrari (w) 1:26.981 +0.834 ES te > c= . NS > Li S 6 IK Lando NorRIS I McLaren Ww) 1:27.274 +1.127 = eee > 7 ——n = «67 ~—s) Daniel RICCIARDO I McLaren w) 1:27.387 +1.240 —- > : : — . Tied > _ / oN 8 Em Carlos SAINZ ! Ferrari I) 1:27.390 +1.243 C) i > = a 9 Bl) Pierre GASLY AlphaTauri iC) 1:27.427 +1.280 _ 2 > maa — x 4 a > -S 10 [EM Fernando ALONSO I Alpine (w) 1:27.662 +1515 “Gane > 4 ais De * Te > A : aa Yuki TSUNODA AlphaTauri w) 1:27.812 +1.665 eS > r wv ft . / 12 |) Esteban OCON I Alpine Ww) 1:27.877 +1.720 ty atone > La Le = > * } a al 153 Ql Sebastian VETTEL ! Aston Martin cD) 1:27.966 +1.819 an. sd > Se Be ae | 14 = Lance STROLL | Aston Martin wi) 1:28.119 +1.972 a f > Det oeee ly ee | LAY at Lae > ; * Ves ‘om Sat F Saf = — a _— ee" pe > ea a i = : : = > Sas — > | ey Verstappen... >i Se > | y —, (X)*SELECT > bia Whe. = : por . sa ; 4 . > 7 | a | = | < jee ) > \ | es : i} es 8 | —— ee ema Rey > söndag 22 maj 2022 kl. 19:46:15 UTC+2 skrev zdenop: > >> >> I think you made it too complicated... IMO no (re)training is not needed. >> >> If you are working with images where you know text location you have >> solved one big problem already. >> Working with a limited number of known text strings (players' names, >> teams' names) gives you other (and IMHO faster) options than OCR. I would >> use python and pyautogui.locateOnScreen[1]. It will return the position of >> the text at the screenshot, so you can sort and calculate the position at >> the race. Of course, you will need OCR of the best time and maybe GAP >> (which you can use to the check of OCR quality) >> >> Another solution would be: >> >> 1. Open screenshot as grayscale >> 2. Inver it (so there will be dark letters on white background, >> 3. Threshold image (convert to black and white) >> 4. OCR each "cell" separately >> >> I made a qick test and some times are not recognized correctly (e.g. >> there is a missing ":" in time for Valtteri BOTTAS, but I think this could >> be solver in python with post-processing of OCR result + GAP time result. >> Or maybe better image preprocessing could solve it too, as I see jpg >> artifact on the thresholded image. >> >> [1] https://pyautogui.readthedocs.io/en/latest/screenshot.html >> >> Zdenko >> >> >> ne 22. 5. 2022 o 19:04 Peter Vallsten <[email protected]> napísal(a): >> >>> Hi! >>> I'm trying to get started with Tesseract and OCR to make my life a bit >>> easier. I'll try to be as descriptive as possible. >>> >>> *Basically what I'm trying to do:* >>> Me and my friends are playing F1 together over Ps5 and I have google >>> sheets with all the stats from our races. Link to document: F1 Google >>> Sheets stats >>> <https://docs.google.com/spreadsheets/d/1vrQBdEDkv6dfKxCO8dtTT5qy1lSW92kXdcSByAskQOA/edit?usp=sharing> >>> Right now I'm typing in all the data myself with is super tedious and >>> time-consuming. I want to load a screenshot into tesseract and get the data >>> ready to copy-paste into the document and make it more automatic. (Example >>> in the bottom of this post) >>> >>> *What I want to do:* >>> I want to parse the data from the screenshots, all the data is already >>> known and the screenshots will be in clear 1080p pictures. I know the name >>> of all the drivers and teams and the lap times are in the format: d:dd.ddd >>> and the gap times are in the format: +d.ddd (possible: +dd.ddd) >>> d = integer >>> I want the output of every position 1-20, name of the driver, team, lap >>> time & gap time to leader. >>> >>> *What I've tried to do:* >>> I'm on Windows so I installed Tesseract 5.1.0 with pre-build binaries. >>> After some googling I got the feeling that Tesseract is easier with Linux >>> so I installed Ubuntu via WSL and installed Tesseract there as well. >>> I followed the guide Training for Tesseract 5 >>> <https://tesseract-ocr.github.io/tessdoc/#training-for-tesseract-5> and >>> cloned "Tesstrain" repo <https://github.com/tesseract-ocr/tesstrain>. >>> But I'm very confused what "LSTM" is and what training modules are >>> deprecated/unsupported for Tesseract 5. >>> The Tesstrain repo has "ocrd-testset.zip" with .tif files and textfiles >>> that describe the expected output so I did the same with my case. *(Included >>> F1 training files as a zip to this post). *I created a >>> "data/foo-ground-truth" as described in tesstrain readme and ran "make >>> training" >>> *Output:* >>> find -L data/foo-ground-truth -name '*.gt.txt' | xargs paste -s > >>> "data/foo/all-gt" >>> unicharset_extractor --output_unicharset "data/foo/unicharset" >>> --norm_mode 2 "data/foo/all-gt" >>> Bad box coordinates in boxfile string! 10 Fernando Alonso Alpine W >>> 1:27.662 +1.515 >>> Extracting unicharset from plain text file data/foo/all-gt >>> Other case I of i is not in unicharset >>> Other case U of u is not in unicharset >>> Other case Z of z is not in unicharset >>> Other case Ä of ä is not in unicharset >>> Other case Ö of ö is not in unicharset >>> Other case X of x is not in unicharset >>> Wrote unicharset file data/foo/unicharset >>> PYTHONIOENCODING=utf-8 python3 generate_line_box.py -i >>> "data/foo-ground-truth/alonso.tif" -t "data/foo-ground-truth/alonso.gt.txt" >>> > "data/foo-ground-truth/alonso.box" >>> Traceback (most recent call last): >>> File "generate_line_box.py", line 6, in <module> >>> from PIL import Image >>> ModuleNotFoundError: No module named 'PIL' >>> Makefile:218: recipe for target 'data/foo-ground-truth/alonso.box' failed >>> make: *** [data/foo-ground-truth/alonso.box] Error 1) >>> >>> I'm quite stuck and don't know how to train my Tesseract 5. Is it >>> deprecated? Should I downgrade my tesseract to version 4 or 3? Am I missing >>> some dependencies? Anyone that can guide me how to train my Tesseract into >>> doing what I want? >>> >>> *Tesseract version:* >>> Output in the terminal: (tesseract --version) >>> tesseract 5.1.0-32-gf36c0 >>> leptonica-1.78.0 >>> libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.2) : libpng 1.6.34 : >>> libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0 >>> Found AVX2 >>> Found AVX >>> Found FMA >>> Found SSE4.1 >>> Found OpenMP 201511 >>> Found libarchive 3.2.2 zlib/1.2.11 liblzma/5.2.2 bz2lib/1.0.6 >>> liblz4/1.7.1 >>> Found libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 >>> libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3 >>> *Python version: *Output in the terminal: (py --version) >>> Pythonpy ??? >>> Python 3.6.9 >>> >>> *Example:* >>> The screenshots look like this: >>> [image: f1_qualifying_1.jpg] >>> [image: f1_qualifying_2.jpg] >>> Expected output: >>> Pos Driver Team Tyre Best Gap >>> 1 Lewis Hamilton Mercedes-AMG Petronas W 1:26.147 - >>> 2 Max Verstappen Red Bull W 1:26.383 +0.236 >>> 3 Bottas Mercedes-AMG Petronas W 1:26.431 +0.284 >>> 4 Sergio Perez Red Bull W 1:26.538 +0.391 >>> 5 Charles Leclerc Ferrari W 1:26.981 +0.834 >>> 6 Lando Norris McLaren W 1:27.274 +1.127 >>> 7 Daniel Ricciardo McLaren W 1:27.387 +1.240 >>> 8 Carlos Sainz Ferrari W 1:27.390 +1.243 >>> 9 Pierre Gasly AlphaTauri W 1:27.427 +1.280 >>> 10 Fernando Alonso Alpine W 1:27.662 +1.515 >>> 11 Yuki Tsunoda AlphaTauri W 1:27.812 +1.665 >>> 12 Esteban Ocon Alpine W 1:27.877 +1.730 >>> 13 Sebastian Vettel Aston Martin W 1:27.966 +1.819 >>> 14 Lance Stroll Aston Martin W 1:28.119 +1.972 >>> 15 Kimi Räikkönen Alfa Romeo W 1:28.561 +2.414 >>> 16 Antonio Giovinazzi Alfa Romeo W 1:28.632 +2.485 >>> 17 Mick Schumacher Haas W 1:28.694 +2.547 >>> 18 George Russell Williams W 1:28.981 +2.834 >>> 19 Nikita Mazepin Haas W 1:29.388 +3.241 >>> 20 Nicholas Latifi Williams W No Time - >>> >>> -- >>> 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 [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/tesseract-ocr/aae40372-4656-42f3-987f-6724108dd525n%40googlegroups.com >>> <https://groups.google.com/d/msgid/tesseract-ocr/aae40372-4656-42f3-987f-6724108dd525n%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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/tesseract-ocr/9102ec05-dbe4-4868-9ae6-ff8d0d4314f6n%40googlegroups.com > <https://groups.google.com/d/msgid/tesseract-ocr/9102ec05-dbe4-4868-9ae6-ff8d0d4314f6n%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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/tesseract-ocr/CAJbzG8wSMUp9jrkAyaCMdr0LUa2tZOWhC6H6mRoRAMHJVkugqw%40mail.gmail.com.

