I am not an attorney but I remember reading a case that had the same issues. I remember the ruling was that a company cannot charge an employee for mistakes, no matter how incompetent the employee is. Their only recourse is to fire the employee or take other disciplinary (or training) actions.
They can use employee performance, including mistakes, when awarding bonuses or raises but cannot take from an employee's existing salary or make the employee work hours for free.
But then there's the issue of keeping your job. If the employee doesn't think s/he can easily get another job, they might have to do what's necessary to keep the one they have. A good thing to do is to keep a careful and accurate record of the unpaid work, or of the salary deductions, along with any proof that unpaid work was done, and present a bill for it if the person is fired or otherwise let go (or even quits).
Go into the world and do well. But more importantly, go into the world and do good.