I think this interface is risky.

Generally, rs is meant for archived data. In that context, the data should be as self-descriptive as possible. In practice, this means that the Field and number of character per block is instrinsicly bound to the recovery of the data. As such, I'd recommend to have these written as a formal header in the data itself, so that the function is reduced to
func NewReader(r io.Reader) io.Reader