For barcodes, you’re essentially plotting 2 values (black or white) over a line across the bars. Then you “read” the information encoded in this string of values. That’s an extremely simple task, and there’s a convention to the system.
OCR on the other hand requires more complex algorithms (ie rules) to recognise patterns in images. Couple that with noise and a large number of different styles/fonts, it makes it more difficult.