Police spokesman Jochen Laschke said a regional train coming from the city of Osnabrueck and heading to the small town of Ibbenbueren collided with a farm truck with a tank full of manure. Laschke said the accident happened in a rural area near Ibbenbueren, 440 kilometres west of Berlin.
According to the first investigators on the scene, the truck got stuck when trying to drive over the train tracks, he said.
TV video footage showed part of the truck lying on one the side of the track, the manure tank on the other. The windows and metal parts of the train's engine were torn away by the impact.
"The train was very crowded," Laschke said. "We got an emergency call at 11:31 am today and rescue team, firefighters and psychologists from all over the region were activated to help."
More From This Section
The train was operated by a small private train company, Westfalenbahn, and not by national train operator Deutsche Bahn.
Especially in rural areas, train crossings are often not blocked by barrier gates.
In recent months, the country's usually reliable train connections have been hurt by several strikes by German train drivers who are in a dispute with Deutsche Bahn over pay and work conditions.
Germany's worst train accident happened in 1998, when a high-speed ICE train crashed in the northern German town of Eschede, killing 101 people and injuring more than 80.