Another notable attempt at recording which users have read which items may be found at CodePlex but is has limitations that you may or may not be able to deal with. The biggest limitation is that while this solution will work with most SharePoint lists it will not work with a document library. Another limitation is that once a list item has been revised the history is lost, whereas with the auditing approach supports multiple versions of a document.
Neither of the above solutions, however, require a user to deliberately press a button or check a box to acknowledge that he/she has read a particular document. If acknowledgement is a requirement then there are other options to consider. One such option would be to customize a document's action menu to open a custom form. The form would require the user to check a checkbox to acknowledge reading a document. When submitted, the form would update a database or SharePoint list to record the username and which document was read. Reports could then be written to list the users who have read a certain document, list all the documents a certain user has read or even list all of the documents that a user has not yet read.
These are just some of the solutions available for "Read and Acknowledge" functionality in SharePoint. Have you used another? I invite you to comment on this post and share your solution.

