At least 29 people have died after a passenger ferry capsized on a river near the Bangladeshi capital Dhaka, officials said on Monday, with fears the toll could rise higher.

Fifteen bodies were found adrift more than two hours after the ferry sank in the Buriganga river, according to the Bangladesh Inland Water Transport Authority (BIWTA).

Divers from the navy, fire service and civil defence department then managed to locate the sunken vessel on the riverbed. Fourteen more bodies were pulled from the underwater wreckage.

The ferry went down after colliding with another, larger passenger ferry in the morning near Farazganj, said Golam Sadeq, the chief of BIWTA.

A rescue vessel was on the way to salvage the ship, which was located at a depth of nearly 6 meters, Sadeq said.

Ten to 15 passengers on the ferry, the ML Morning Bird, had managed to swim ashore, he said.

Amateur video footage showed that the ferry was hit by the larger vessel from the rear. It overturned and sank in less than 10 seconds.

Authorities have confiscated the ship that hit the passenger ferry, Sadeq said, adding that the master of the ship had escaped immediately after the mishap.

Thousands of people thronged on the banks as the rescue operation took place. Many of them were in search of missing relatives.

BIWTA said there were at least 50 passengers on board, but a survivor told private broadcaster 71 Television that the vessel was carrying at least 100 passengers.

The survivor said he was travelling to Dhaka along with his brother who is still missing. They had set out from his village home in the central district of Munshiganj, 30 kilometres south of Dhaka.

Serious accidents involving ferries are quite common in Bangladesh, a country of many rivers.

Experts blame poor safety measures and the lax implementation of regulations.