To my understanding, when you enable rating feature in a list/library, Rating (0-5) column, a Number of Ratings column is also added to the list. Hence these columns will be associated with each list item. Technically, when a user (consider the user has contribute access) gives a rating to a document, the columns related to rating feature gets updated, which means the item is getting updated/edited. So obviously when a user has only Read permission, the user cannot edit/update a list item. So it is not practically possible to edit an item with Read access. So how to solve the riddle? You have got few workarounds to fix it up.
Approach 1: Making changes in the permissions like adding a edit base permission to Read permission level or granting the users edit access directly or through any group. But I know all these ideas will have lots of compliance risk. So lets drop it.
Approach 2: When something is not achievable through OOTB features, the only option is customization. I have seen some cool implementations for rating feature in this blog.