Disjoint subsets problem complexity
Create a bipartite graph:


For every element $x\in\bigcup_{i=1}^nS_i$, introduce a corresponding vertex $u(x)$.
For every set $S_i$, introduce a corresponding vertex $v(S_i)$.
Connect vertex $u(x)$ to vertex $v(S_i)$ by an edge, if and only if $x\in S_i$.


Then your problem essentially asks, whether there exists a subset $F$ of the edges, so that


every vertex $u(x)$ is incident to at most one edge in $F$, and
every vertex $v(S_i)$ is incident to at least $b_i$ edges in $F$.


This is an instance of the so-called $f$-factor problem, and hence solvable in polynomial time.
See for instance the book "Matching Theory" by László Lovász and Michael D. Plummer.