Not sure if this idea is viable/easy for you, but it might be useful:
There are a few parts to making it as realistic as possible, to start with the pages not being completely flat, to achieve this you can put in a mesh that looks like a page of a book when it’s open. If you want to go really crazy you could even create an animation for it that changes it based on where in the book you are…
These meshes will need materials, in this case I would suggest either having one material per page, (irritating but could probably be constructed runtime), or a single texture per book with all pages. As all pages are of equal size you should be able to place them in a square, (power of two on all sides preferably), grid. And then have your materials change UV based on what page is to be viewed.
When it comes to flipping the pages, using two sets of meshes, one for the currently shown page, and one for the new page. Then use animations to “flip” between them. When starting the animation also update the texture/material/UV as needed.
The major issue I’d worry about is depth conflicts, to handle this you may need to move the “old” page down a little before removing it after the animation is complete.
There are obviously many other ways to solve it, but this seems to me a relatively simple way of getting a realistic looking book.