A cargo train collided with a truck carrying farm workers at a crossing in South Africa, killing at least 26 people and leaving bodies strewn across the scene of the accident, officials said.

Provincial spokesman Joseph Mabusa said on Friday at least 25 others were injured in the accident in Mpumalanga, an eastern province, which highlighted once more South Africa's problems with road safety.

The truck driver, who was trying to cross the tracks but apparently miscalculated the speed of the approaching train, was arrested late Friday, he added.

The truck was carrying about 50 farm workers when it was hit by the train carrying coal.

"It is a very gruesome scene. Some bodies are without heads and some without limbs. Forensic teams are still working on the scene," Mabusa said.

The truck was carried 200 metres by the impact, leaving body parts in its wake and making it hard for forensic experts to say how many people were killed, he added.

"The driver was taken to hospital. His condition is unknown. It's difficult to say what happened but at this stage it seems that the truck miscalculated as it was crossing the railway line."

Emergency services said at least 24 other people were injured, some of them critically, in the smash near the town of Hectorspruit, about 400km east of Johannesburg.

State rail operator Transnet said the train was carrying coal for export to Mozambique, but there was no derailment. The coal was destined for the Indian Ocean port of Maputo.

South Africa's government has announced plans to spend billions of dollars on revamping its creaking rail network, although human error is as often to blame for sporadic accidents.

Source: Agencies