The proper way to calibrate the machine is to tell the axis (only 1 at a time) to move 100mm and measure the actual amount it moves. If it’s off then you can adjust the “steps” for that axis, it’s pretty easy on a TAZ but rather than me going through the whole thing here I am sure it’s documented on this site.
You can tell the axis to move 100mm either through the built in controller (display) or through whatever software you are controlling the machine from, it needs to be exact so if you tell it to move 100mm and it measures 99mm then it needs adjusting.
If it does measure correctly, then it’s possible there is a translation error somewhere between your design software and the slicer you use. You could test this by downloading any of the calibration prints off Thingiverse and print to see if they print correctly.
Now, it’s not unusual to have slight variations in print size due to many factors but normally it’s less than 1mm difference and it sounds like you are getting 4mm or more difference.
Now, holes are a whole other can of worms and basically they will always come out a bit smaller (around 1-2mm) and there have been many, many discussions on that matter and until there is some compensation in the slicers we just need to design around that limitation.