It probably does not matter if the O/0 error is in the original .pdf file or if the OCR misreads it. The tr operator (refer tr/SEARCHLIST/REPLACEMENTLIST/cdsr) directly corrects the problem. Your test for a reasonable value is probably a good idea, but it really has nothing to do with the O/0 problem.
my ($text, $page) = split "\t", $line;
$page =~ tr/O/0/ and warn "Replaced 'O' with '0' in page $page";