Such a great question - an internal fermion line is not distinctly identified as either a particle or an antiparticle. The only necessary condition is that arrows pointing in and arrows pointing out of an an electromagnetic interaction point go in opposite directions.
An incoming fermion, or an outgoing antifermion is associated with a spinor (often denoted $u(p)$). An incoming antifermion, or an outgoing fermion is associated with a dirac adjoint of a spinor (denoted $\bar{u}(p)=u^\dagger(p)\gamma^0$). Then the vertex rule for electromagnetism is $-ie\gamma^\mu$. An outgoing photon is associated with a polarization 4-vector $\epsilon_\mu(p)$. So, for example, if an incoming fermion scatters off a photon, all the matrix operatiosn make sense, the matrix element is proportional to:
$$
-ie\bar{u}(p')\gamma^\mu u(p)\epsilon_\mu(p_{\gamma})
$$
An internal fermion line doesn't have a spinor, it has an entire dirac matrix associated with it. The propogator is:
$$
\frac{i(p_\mu\gamma^\mu_{ij}+m I_{ij})}{p^2-m^2+i\varepsilon}
$$
Here I've taken some care to write the spinor indices of this dirac matrix, and $I$ is an identity matrix. Then the vertex rule+other fermion that the arrow points at is contracted with the $j$ index, and the vertex rule that the arrow points away from is contracted with the $i$ index.
This is the sense in which people say the horrific and poorly defined phrase "an antiparticle is a particle moving backward in time." The vertex on top could be interpreted as making an antifermion that goes down and a fermion that goes to the right. Or it could be phrased as an incoming fermion from the bottom and an outgoing fermion going right. Or maybe it's an incoming fermion from the bottom and an incoming antifermion from the right which annihilate. Who's to say? There's no well defined direction that time goes in this diagram (consider, for example, moving that top vertex of the triangle to the right of the rightmost vertex, and you'll find that both of their time-flow directions have been changed). And besides, for most of the loop integral the quarks propagators are off-shell and aren't really particles anyway. There may be some way to write the propogators when they're near-on-shell as $\bar{u}_i(p)u_j(p)$ and then there might be a way to identify them as a specific linear combination of particle and antiparticle for that particular value of $p$ - I'm not sure.
At the end of the day, all this crap about making sure lorentz indices ($\mu,\nu$) and spinor indices ($i,j$) are all summed over or "contracted" with another vector or matrix like object is the reason that charge is conserved. In other words, if you tried to make a Feynman diagram that didn't conserve charge, you would simply be drawing a diagram that didn't make any sense matrix-wise - like multiplying two vectors together (what would that even mean??)