Sorry for the delay in response.
In case of processing multipage documents with a large number of pages you can recognize pages of the document in parallel using the FRDocument object (please check Guided Tour → Advanced Techniques → Parallel Processing). Then you can access the layout of the recognized document and post-process each page separately as you need. Please find the information in the Developer’s Help: Guided Tour → Advanced Techniques → Working with Layout and Blocks.
As for your second question, you may separate particular blocks manually using the ILayoutBlocks interface. It is possible to delete the old block (use the DeleteAt method of the LayoutBlocks object) and create another two blocks instead of it (use the AddNew method of the LayoutBlocks object). In this case, after processing you can get separate values as you wish ("name: abc"; "date:1/1/1").
Another way to get separate values after recognition is to apply some post-processing to the XML output to extract needed data. Please see the Specifications → Export Formats → XMLSchema Description article in the Developer’s Help for detailed description of the XML format. As the XML output includes the coordinates of each element, you can parse the words by coordinates on your side and extract the necessary data from the output.
The basic idea is that the field value and the field name would be close to each other in a document. Therefore, you could, for example, search the XML for the keywords like the field names, get those keywords’ coordinates and then find other text blocks with the field values situated somewhere near those keywords (right below them, on the same level to the right, etc.). If you need to find the words from one line, you can use the baseline coordinate of the words. If the baseline coordinates are close, the words are from the same line.
In case you would like to recognize forms, you can also try FlexiCapture Engine.