Training Tesseract 5 for a New Font

Gabriel Garcia
26 Sept 202217:23

Summary

TLDRThis video tutorial guides viewers on training Tesseract OCR with a custom font for improved recognition. It covers generating ground truth data with images, text, and box files, using 'text2image' from Tesseract's training tools. The script provided automates creating single-line text files and images, setting up training with 'makefile', and evaluating model performance. Tips on adjusting parameters for better training outcomes are included.

Takeaways

  • 😀 The video is a tutorial on training Tesseract, an optical character recognition engine, with a custom font to improve its recognition capabilities.
  • 📄 To train Tesseract, you need to provide ground truth data which includes generating images with the custom font and corresponding text and box files that describe the content and location of the text.
  • 🖼️ The script uses 'text2image' application from Tesseract's training tools to generate images from text files.
  • 📝 The generated images should be in TIFF or PNG format, accompanied by a '.txt' file for the text and a '.box' file that describes the location of each character.
  • 🔍 The video creator developed a Python script to automate the process of creating single-line text files from a large text file and generating the corresponding images and box files.
  • 🔢 The script uses the 'unicharset' file from Tesseract to define the rules of English, which helps the neural network understand how words are formed.
  • 💻 The video demonstrates how to set up the folder structure and run commands for training Tesseract with the new data.
  • 🔄 The training process involves running iterations where Tesseract learns from the provided data, and the number of iterations can be adjusted based on the desired accuracy and time frame.
  • 📊 The video shows how to evaluate the trained model using a test image and compares the results before and after training to demonstrate improvement.
  • 🔧 The creator encourages viewers to modify the provided script to suit their needs, such as changing the font, model name, and output directory, to ensure a deeper understanding of the training process.

Q & A

  • What is the main purpose of training Tesseract with a custom font?

    -The main purpose is to improve Tesseract's recognition capabilities for a specific font that it may not recognize well by default.

  • What does 'ground truth' mean in the context of training Tesseract?

    -'Ground truth' refers to the correct or expected output that Tesseract should recognize from the images, which includes both the text and the location of each character.

  • What file formats are typically used for the image and ground truth data when training Tesseract?

    -For the image, TIFF or PNG formats are used, while a .txt file is used for the ground truth text and a .box file describes the location and character of each element in the image.

  • How can one generate images with a custom font for training Tesseract?

    -One can use the 'text2image' application that comes with Tesseract's training tools to generate images with the custom font.

  • What is a 'box file' and why is it necessary for training Tesseract?

    -A 'box file' describes the location and identity of each character in the image. It is necessary because it provides the ground truth data that Tesseract uses to learn where to find characters in the images.

  • What is the source of the training text used in the script?

    -The training text is sourced from the 'training-text' repository, specifically the English folder, which contains a large file full of English text.

  • How does the script separate the training text into single-line text files?

    -The script reads the large training text file and creates a separate text file for each line, then uses 'text2image' to generate an image and a box file for each line.

  • What is the significance of using the 'unicharset' file in training?

    -The 'unicharset' file contains the rules of English that help the neural network understand how words are formed, which is crucial for accurate recognition.

  • How can one evaluate the performance of a trained Tesseract model?

    -One can evaluate the model by running a command that uses the trained model to recognize text from an image and compares it against the expected output.

  • What is the recommended approach for increasing the accuracy of the trained model?

    -The recommended approach is to increase the number of training iterations and to use a larger dataset of images, while being cautious not to overfit the model.

  • How can one install and use a custom font for training Tesseract?

    -One can install the font on their system and then specify the font in the training script. On Linux, this might involve updating the font cache, while on Windows, it's as simple as installing the font and using it in the script.

Outlines

00:00

🖥️ Training Tesseract OCR with Custom Fonts

This paragraph introduces the process of training Tesseract, an optical character recognition engine, with a custom font to improve its recognition capabilities. The speaker explains the need to generate images with the custom font and accompanying text and box files that describe the content and location of the characters on the image. The speaker also mentions the use of the 'text2image' application that comes with Tesseract's training tools to generate these images and files. The focus is on creating a ground truth for Tesseract to learn from, which involves using a large text file and a script to split it into single-line text files, each generating an image and a corresponding box file.

05:00

📂 Organizing Data and Training Setup

The speaker discusses the folder structure and setup required for training Tesseract with custom data. They mention creating a 'data' folder and a subfolder named after the model, in this case, 'Apex'. The paragraph details the process of using a script to split a large text file into single-line files, generating images and box files for each. The speaker also covers the use of a specific font, downloaded from the web, to be used in the training process. They explain the command to initiate the training process, which includes specifying the model name, using English as a base model, and setting the number of training iterations. The speaker emphasizes the importance of not overfitting the network by experimenting with the number of iterations and suggests generating more line files for training to improve results.

10:01

🔧 Fine-Tuning the Training Process

In this paragraph, the speaker delves into the training process, explaining how to use a make file to run training commands with specified variables such as the model name and test data folder. They discuss the importance of starting with a high error rate and reducing it through iterations, suggesting an increase from 100 to 400 iterations for better results. The speaker also talks about generating more line files for training to improve the model's accuracy and provides a command to evaluate the trained model. They emphasize the importance of understanding the process rather than just using a script with arguments, encouraging viewers to modify the script to suit their needs and contribute to its improvement.

15:01

🏁 Wrapping Up and Further Customization

The final paragraph wraps up the training process, explaining how to use Tesseract with the test data folder and the trained model. The speaker discusses the possibility of training with different fonts by installing them and specifying them in the training command. They also mention the potential for optimizing the image size and character spacing for better training results. The speaker invites viewers to download the provided script, make changes, and contribute to its improvement. They conclude by encouraging viewers to ask questions, subscribe for more content, and engage with the community for support and further learning.

Mindmap

Keywords

💡Tesseract

Tesseract is an open-source Optical Character Recognition (OCR) engine, capable of turning images of text into editable and searchable text. In the video, the focus is on training Tesseract to recognize a custom font better. The script mentions generating images with the custom font and corresponding text files to provide Tesseract with 'ground truth' data for training.

💡Ground truth

Ground truth refers to the correct or accurate data against which the system's output can be compared during training and testing. In the context of the video, it involves creating text files that describe what's written on the images and box files that describe the location and identity of each character in the images, which Tesseract uses to learn and improve its recognition capabilities.

💡Box file

A box file is a file format used in OCR training that specifies the location and identity of each character in an image. It is part of the ground truth data that helps Tesseract to understand where each character is located on the image and what character it represents. The video script describes generating box files using the 'text2image' application that comes with Tesseract training tools.

💡Texture image

Texture image is an application that comes with Tesseract training tools and is used to generate images for training purposes. As mentioned in the script, it can generate images that are compatible with Tesseract's training requirements, such as line images, which are single lines of text instead of full pages.

💡Line images

Line images are a type of training image required by Tesseract 5.0, which contain only a single line of text instead of a full page. The script discusses the need to generate line images using the 'texture image' application and how they differ from the full-page images that were compatible with Tesseract 4.

💡Training text

Training text refers to a large corpus of text used to train the OCR engine. In the video, the script mentions using the 'english.training.text' file from the 'lstm' folder as a source of English text to generate training images.

💡Python script

The Python script mentioned in the video is a custom script developed to automate the process of generating training images, text files, and box files from a large training text file. It separates the training text into single-line text files and uses 'text2image' to generate the corresponding images and box files.

💡Model training

Model training in the context of the video refers to the process of teaching Tesseract to recognize a custom font using the generated ground truth data. The script describes using a command to initiate training with a specified number of iterations and evaluates the model's performance after training.

💡Iterations

In machine learning, iterations refer to the number of times an algorithm processes the training data to improve its performance. The video script discusses running the training process for a certain number of iterations, starting with 100 and then increasing to 400 to see improvements in the model's error rate.

💡Error rate

The error rate is a measure of how often the model makes mistakes during training or evaluation. In the video, the script mentions starting with an error rate of 66 (presumably a placeholder for a high error rate) and observing improvements as the number of training iterations increases.

💡Custom font

A custom font is a typeface that is not one of the standard fonts available in Tesseract's training database. The video is focused on training Tesseract to recognize a specific custom font called 'Apex Legends'. The script describes downloading the font file and using it in the training process.

Highlights

Introduction to training Tesseract with custom fonts for improved recognition.

Explanation of providing ground truth to Tesseract for custom font training.

Generation of images with custom fonts and corresponding text and box files.

Documentation review for training Tesseract with tiff or PNG images and Dodge et.txt files.

Challenges with automatic lead generation of box files and the solution to generate them manually.

Using texture image application to generate images compatible with Tesseract 5.

Script development to automate the generation of single-line text files and corresponding images.

Utilization of link data lstm for training text and creation of a data folder.

Customization of the script to generate images with specific fonts like Apex Legends font.

Folder structure explanation for organizing training data and scripts.

Command crafting for training Tesseract with custom data and model names.

Importance of not overfitting the network and the iterative training process.

Evaluation of the trained model using a single line of text and its accuracy.

Availability of the script as a wrapper story for easy access and modification.

Encouragement for users to understand and modify the script for their custom needs.

Discussion on generating ground truth data manually for non-custom font training scenarios.

Practical tips on optimizing image size and character spacing for better training results.

Final thoughts on the training process, potential improvements, and community engagement.

Transcripts

play00:00

hello there so you decided to train

play00:02

Tesseract with your custom fund so he

play00:04

recognizes things a little bit better

play00:06

that's the video for you so let me jump

play00:08

right into it

play00:10

um

play00:11

so let's first start on how do you train

play00:13

Tesseract I'm going to show a little bit

play00:15

of the documentation

play00:17

um and filling the gaps basically so

play00:20

I think the most important thing is how

play00:22

do you even provide the ground group so

play00:25

how do you provide to Tesseract what you

play00:28

think is right so basically what we want

play00:31

to do here for a custom fund is generate

play00:33

images with that custom fund and on the

play00:37

same file name kind of attached to the

play00:39

same file you want to generate like a

play00:41

text file that describe what's written

play00:44

on the image and also a box file

play00:47

that or that describes that on the image

play00:50

each character what's the location of

play00:52

the character and what character is it

play00:53

that way with that ground truth

play00:56

Tesseract can go and train itself on the

play00:58

new image right so I think that's the

play01:01

first thing that you will try to figure

play01:04

it out right so let's start

play01:08

um

play01:09

so you can see here on the documentation

play01:12

he mentions you gotta have a tiff fire

play01:15

or PNG file whatever we're going to use

play01:16

Tiff for the image that I just mentioned

play01:19

in a Dodge et.txt file for the ground

play01:23

truth so that would be like that

play01:25

whatever is written on the image I'm

play01:27

going to show later how exactly that

play01:29

looks

play01:30

um

play01:31

but also we've got to provide something

play01:33

called The Box file in my experience

play01:36

um the automatic lead generation of box

play01:38

files of Tesseract can be a little bit

play01:40

finicky and as we're generating the

play01:42

ground through ourselves from a custom

play01:44

fund we're going to have both the Box

play01:46

all the text file

play01:49

um the

play01:51

um

play01:52

the image file

play01:54

into the in the Box file

play01:58

um so let me show you how exactly that

play02:00

looks like

play02:02

um

play02:04

the first thing I had to do was

play02:07

figure out a way to generate those

play02:09

images right so turns out you use the

play02:12

texture image application uh it comes

play02:14

with the Tesseract training tools so

play02:16

watch my video in the description if you

play02:18

missed that so after you install

play02:20

Tesseract with its training tools you're

play02:21

going to have texture image on your path

play02:24

so

play02:25

and the problem with texture image is it

play02:28

generates images in a way that was

play02:30

compatible with tester X4 but now

play02:32

Tesseract five test track 5 needs

play02:34

something called line images and those

play02:37

are nothing more than images there's

play02:39

just a line a single line instead of a

play02:41

full text full page of text

play02:44

so the first thing I had to do is figure

play02:46

out training text so like a textbook

play02:49

somewhere in the web we can grab text in

play02:51

this case I used the training text from

play02:54

the link data lstm if you go to the

play02:57

English folder you're going to see you

play03:00

have the english.training text here and

play03:02

that this is just a big file full of

play03:05

English text so that's where I got it

play03:07

from the problem is texture image gets

play03:10

all this text and generates just an

play03:12

insane amount of pages and pages of text

play03:14

with it and we don't want that remember

play03:16

Tesseract 5.01's line images so I

play03:21

developed a quick script that gets this

play03:24

training text file and just separates

play03:26

into a bunch of files that only has one

play03:29

line each I'm going to also show this in

play03:31

a second

play03:32

and after you generate those files you

play03:36

can just run text to image just fine and

play03:38

it's going to generate for you the the

play03:40

Box file and the image itself

play03:43

cool so the first thing I did was

play03:45

creating a link data folder you can see

play03:48

on the top left here and all it is is

play03:50

just this

play03:52

folder here with all those files here

play03:56

we're actually just going to use

play03:58

training text but that address

play04:01

um and that's about it

play04:03

um so and I wrote this python script

play04:04

here which is also going to be available

play04:06

as a wrapper story I'm going to link in

play04:07

the description

play04:09

and this is you can just run it and

play04:12

it's going to do exactly what I said

play04:13

it's going to get this big text file

play04:15

it's going to get each line and create a

play04:17

separate text file for that and then

play04:20

call text to image on that new file to

play04:22

generate everything for us

play04:24

um so let me explain some stuff here

play04:27

actually yeah we're going to use the

play04:29

link data uni chart set to generate uh

play04:31

the new images inertia sets basically

play04:34

kind of the rules of English

play04:37

that helps the neural network figure out

play04:41

exactly how words are formed in certain

play04:43

languages English in this case

play04:45

and you can use whatever you want here

play04:47

there's plenty

play04:49

um those arguments were mostly I got

play04:51

from what Tesseract for test drain.sh

play04:55

file uh used the only thing I changed

play04:58

was the Y size because now instead of

play05:00

being a full page just a small line

play05:02

uh the shower spacing so it's not too

play05:05

not too tight

play05:07

and just one page of course and in this

play05:10

case I didn't say it yet but I'm going

play05:13

to use the Apex Legends font uh I just

play05:16

downloaded from the web let me see if I

play05:18

can find it

play05:20

feedbacks regular OTF so I just download

play05:23

this OTF file from the first Google

play05:24

Chrome Google search I found and that's

play05:29

about it so that's what I'm going to try

play05:30

using

play05:31

okay so let me show you I'm going to

play05:33

walk exactly how my whole folder

play05:35

structure is laid out how exactly

play05:37

everything

play05:38

any of this works in a second but for

play05:40

now let me just run the script so to get

play05:42

an ideal what's going on

play05:43

uh first actually I'm going to create

play05:46

the data folder and the grout data

play05:49

folder so I think the best documentation

play05:52

for training I found to be the readme of

play05:54

this rapper story actually tells you

play05:56

exactly what to do instead of some high

play05:57

level ideas it actually tells you do

play05:59

that and you get training going

play06:01

one thing it says is you got to create a

play06:04

folder called data and then the model

play06:07

name you're going to train in my case

play06:08

it's Apex Dash ground Dash truth so

play06:10

that's what I did here I just created

play06:12

Apex dashboard

play06:15

and now if I run split training.text.pi

play06:17

it should do exactly what I mentioned

play06:19

it's going to get the training text file

play06:22

which is an insane amount of words and

play06:25

you're going to separate into a bunch of

play06:26

small single line text files generate an

play06:31

image from that in a box file from that

play06:32

let me show you how that looks

play06:34

so I'm gonna this is uh Windows WSL by

play06:37

the way with your Ubuntu so I'm going to

play06:39

copy those files over to my actual

play06:42

Windows machine

play06:44

and that looks good actually I'm gonna

play06:48

get to my download folder

play06:51

and done

play06:53

wheel

play06:55

so this is what those files looks like

play06:58

so you can see just an image Windows

play07:01

will walk about page small feeds Garden

play07:03

foreclosure index payment auto

play07:05

this is the text file I generated

play07:07

windows we walk about page mode okay

play07:11

cool though same thing and most

play07:13

importantly generates a box file the Box

play07:15

file is basically each letter in what

play07:18

exact position it is on the image and I

play07:20

imagine size rotation scale maybe I

play07:22

don't know but you can see you see

play07:24

Windows right in here vertically so this

play07:26

is each letter in any space here we and

play07:28

so on so this is all generated by the

play07:30

texture image this is not Tesseract here

play07:32

there's nothing running no machine

play07:33

learning anything so this is just us

play07:35

generating a ground proof so we're

play07:38

generating like a beginning like

play07:39

something that we know Not Human by you

play07:42

know something we completely trust it's

play07:44

not generated by AI

play07:46

and we're going to use that tutoring

play07:48

okay cool

play07:49

so

play07:55

so

play07:56

let's begin training I guess

play07:59

um let me go to test train and this is

play08:03

what it looks like I kind of crafted

play08:05

this command I'm gonna put in the

play08:07

description of the video as well it's

play08:09

gonna be this bad boy okay so

play08:12

explaining some things here

play08:14

um it's going to use the Tesseract

play08:16

folder one folder of test data so what

play08:19

is that let me show you so

play08:22

I basically cloned Tesseract any side

play08:24

pass director is a folder called test

play08:26

theater and it has some English network

play08:29

default settings so this file wasn't

play08:31

here at putting here but all the letters

play08:34

were including those configs fire which

play08:36

is what we're actually looking for which

play08:39

the lstm.train and a bunch of others

play08:41

here so basically if you get clone

play08:44

that's correct inside here

play08:51

if you clone it this holder is going to

play08:53

be in there right but it's missing the

play08:56

english.train data file so we also got

play08:59

to get that

play09:00

so to get that we go here and we click

play09:02

clone the test data best and on that

play09:05

test database you're just gonna find the

play09:07

train data file then you just get this

play09:10

train data file and let it inside

play09:13

a tutorial inside of this right Builder

play09:17

clone inside test data this is all going

play09:19

to be on GitHub again like this whole

play09:21

folder structures I don't care don't

play09:22

care too much about exactly the folder

play09:25

structure just continue watching the

play09:26

video so you understand what I'm doing

play09:28

and then you can do your own folder

play09:30

structures the way you want and so on

play09:32

um Okay so

play09:34

back to explaining exactly what I'm

play09:37

doing with that command

play09:41

um which is this okay so we're saying

play09:45

this direct test data is where the sum

play09:47

of the test data is going to be like the

play09:48

English and so on and then we're going

play09:50

to run this make file here uh oh right

play09:52

this is the test screen repo story this

play09:55

is the one I was talking about that the

play09:56

readme is good so

play09:58

it would definitely want to clone that

play10:00

as well again it's going to be on my

play10:02

GitHub but it would call that yourself

play10:04

if you want to do it from a scratch

play10:07

um and then

play10:08

um inside here right inside test string

play10:11

there's a make file that make files will

play10:13

actually runs a bunch of commands and

play10:16

one of them is the training command

play10:19

um then as a bunch of variables you can

play10:20

specify I'm going to specify the model

play10:22

name being Apex they start model in

play10:24

English that means I'm going to train

play10:26

all those things on top of the English

play10:27

model

play10:29

and then again for some reason also

play10:31

needs this test data again folder same

play10:33

path as before okay and then I'm going

play10:35

to put next iterations actually 100. oh

play10:38

that means I'm going to begin with

play10:40

English and I'm going to run 100

play10:42

iterations this is very low this is

play10:44

really not a lot 100 iterations you

play10:46

should definitely bump that to something

play10:48

that finishes within the reasonable

play10:50

amount of time you've got to experiment

play10:52

but something like ten thousand twenty

play10:54

thousand might be good you don't want to

play10:56

overfit so you don't want to do a lot

play10:58

um hear the best things experiment you

play11:02

want use the best results see what you

play11:03

can weigh and so on let me actually do a

play11:06

little bit more I'm gonna do 400

play11:07

iterations so you can see kind of the

play11:09

progress so

play11:11

you begin with 66 66 error rate which is

play11:16

a place of optimal so you can see 100

play11:18

iterations is really not great so I

play11:21

bumped this to 400 let's see if that's

play11:23

going to improve any

play11:25

so now it's rating of 53 so that's what

play11:28

I'm saying if you spend if you let your

play11:31

computer do this for hours and then

play11:33

maybe two days uh you can probably get a

play11:36

very low error array just again be aware

play11:39

to not over fit the network so

play11:43

um one thing you can do is instead of

play11:45

generating a hundred files I'm going to

play11:46

show later you can generate way more

play11:49

line files for the training data so

play11:53

I can tune the script I created here

play11:55

instead of going through this whole file

play11:57

which has a total of 193

play12:00

000 lines I just did a hundred right

play12:02

because we gotta finish right for the

play12:04

video but if you remove this limitation

play12:07

here if you just go on my script and

play12:09

comment those few lines that means now

play12:11

it's going to generate 193 000 images

play12:14

for your network your network should

play12:16

train so that might be a little bit

play12:18

better for you so you can see it's

play12:19

dropping roughly 10 each time so you can

play12:22

see if I continue a bunch of iterations

play12:23

it's going to get a really good result

play12:26

and if I try actually evaluating it so

play12:30

this is a command to evaluate so I'm

play12:31

going to evaluate English 1.f so this is

play12:33

an image I'm going to print to the

play12:35

standard output I'm going to use the

play12:37

test data there as this

play12:39

the data folder we just created that has

play12:42

now the check it out

play12:44

apex.train data so this is our model

play12:46

here's the finished model of a new newly

play12:49

generated data

play12:51

I'm going to say

play12:52

this file is just a single line of text

play12:54

which we know it is and I'm going to say

play12:56

the languages that just don't want to

play12:57

create it now Apex and log level all

play13:00

body kicks of it and you can see it

play13:02

works pretty well

play13:04

um so that's kind of it I'm gonna get

play13:07

this rapper story up on the URL so you

play13:08

guys can just download it and start

play13:10

messing with the script um one of the

play13:13

reasons on this script I didn't do any

play13:14

arguments is because I want you guys to

play13:17

change it I want you to go here and

play13:19

change the output directory the name of

play13:21

the model the name of the font I don't

play13:23

want to create a tool that someone can

play13:25

just

play13:26

call it with a bunch of arguments and

play13:28

call it a wrap and it failed and you

play13:30

have no idea why I want you guys to

play13:31

understand what's going on here so you

play13:33

can do way more than just train your

play13:35

custom phone you can do more stuff you

play13:37

can get ground truth which isn't

play13:38

generated by text to image you can get

play13:40

ground truth that is generated by

play13:42

yourself by a human there's many many

play13:44

options here okay

play13:45

so no let me explain exactly how it

play13:48

works

play13:49

uh let me see where do I even begin

play13:52

um so I think I explained Well the box

play13:54

file which is just uh getting the image

play13:57

uh with a ground truth text that the

play14:00

image has written in it in a box file

play14:02

which basically says each character

play14:04

where it's positioned on the screen and

play14:06

which character does it represent and

play14:08

that's basically how you train Tesseract

play14:10

period not just for a custom film for

play14:12

anything really the trick here is how do

play14:16

you get the ground truth in our case as

play14:18

it's just a custom fund we can just

play14:21

generate it automatically robotically

play14:23

and just generate it and then train the

play14:25

data on a massive amount of data right

play14:28

but let's say you want to train with

play14:30

handwritten data now you cannot

play14:32

automatically generate handwritten data

play14:34

right so you've got to scan things and

play14:36

so on you're going to actually generate

play14:37

the ground through tax files and not

play14:40

only that you would also generate the

play14:41

Box files there's there are tools for

play14:43

that if you Google box fire generator

play14:45

Tesseract you should probably find some

play14:47

applications that can do that for you

play14:50

and that's kind of the gist of it

play14:53

um let me see what else I could explain

play14:57

there's the test ring

play15:01

um

play15:02

and I think that's basically the gist of

play15:05

it

play15:06

let's Tesseract with the test data

play15:08

folder and then you put English dot

play15:10

train data inside that's basically all

play15:13

you do and the link data you get from

play15:15

the English folder on the link data

play15:17

all STM rep story so I think that wraps

play15:21

it up if you want to train a different

play15:23

font which isn't uh the one I trained so

play15:26

you can see a specified phone equal Apex

play15:30

and here what you do is just report it

play15:33

you can just select the fault you want

play15:35

and how do you install this font so I

play15:38

think in my case

play15:40

it was something like going to use a

play15:42

local share of funds yep then I put this

play15:45

pump here

play15:47

um which I downloaded from the web and

play15:49

then you can just run let me think FD

play15:52

cash scanner though FC cash FV that's

play15:54

going to force

play15:55

um Ubuntu to re-evaluate the cache of

play15:57

funds it's going to find Apex Legends

play15:59

and cache it and now it's a recognize

play16:02

font on Windows you just double click a

play16:04

font you're gonna see there's an install

play16:06

button

play16:07

see install and after installing the

play16:10

fund you can just specify it here and

play16:11

then you can just use it to train you're

play16:14

getting just a bunch of stuff here as

play16:15

well you can see on the images I kind of

play16:19

generated them a little bit wider than

play16:21

necessary so if you want to really

play16:22

optimize it you could just reduce the

play16:26

image size a bit C there's a lot of

play16:28

white space in the right you could

play16:30

remove a bunch of that you can see

play16:32

there's also a lot of space below but I

play16:35

could not remove it actually it was uh

play16:37

texture image was failing anything too

play16:39

small so 480 walked and I laughed at it

play16:42

could also change the exposure character

play16:45

spacing so you can see they're very

play16:46

spaced out one of my generation so

play16:48

there's a lot of space between them it

play16:50

could increase that overall to remove

play16:51

that whatever you want

play16:54

um that's kind of the gist of it there's

play16:56

not a lot of secret feel free to

play16:58

download my rapper story and change as

play17:01

you wish if you want to make an

play17:03

improvement feel free to also make

play17:05

changes and submit a pull request and I

play17:08

hope it was helpful if you have any

play17:11

problems any questions just let me down

play17:13

let me know in the comments below and

play17:16

we're going to try replying in the

play17:17

timely manner and please subscribe if

play17:19

you want to see more content leave a

play17:21

like and Godspeed

Rate This

5.0 / 5 (0 votes)

相关标签
OCR TrainingTesseract GuideCustom FontsImage GenerationText RecognitionMachine LearningFont InstallationData GenerationPython ScriptingAI Tutorial
您是否需要英文摘要?